Skip to content

Commit fb6eb83

Browse files
committed
Merge remote-tracking branch 'origin/dev' into merged_tl_credited
2 parents df74ae8 + c9289f5 commit fb6eb83

File tree

88 files changed

+2072
-1461
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

88 files changed

+2072
-1461
lines changed

.github/workflows/mill-ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ jobs:
2525
runs-on: ubuntu-latest
2626
strategy:
2727
matrix:
28-
config: [DefaultConfig, DefaultBufferlessConfig, DefaultRV32Config, TinyConfig, DefaultFP16Config]
28+
config: [DefaultConfig, DefaultBufferlessConfig, DefaultRV32Config, TinyConfig, DefaultFP16Config, DefaultBConfig, DefaultRV32BConfig]
2929
steps:
3030
- uses: actions/checkout@v2
3131
with:
384 KB
Binary file not shown.

build.sc

Lines changed: 77 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ object v {
1212
val scala = "2.13.12"
1313
// the first version in this Map is the mainly supported version which will be used to run tests
1414
val chiselCrossVersions = Map(
15-
"5.1.0" -> (ivy"org.chipsalliance::chisel:5.1.0", ivy"org.chipsalliance:::chisel-plugin:5.1.0"),
15+
"6.7.0" -> (ivy"org.chipsalliance::chisel:6.7.0", ivy"org.chipsalliance:::chisel-plugin:6.7.0"),
1616
// build from project from source
1717
"source" -> (ivy"org.chipsalliance::chisel:99", ivy"org.chipsalliance:::chisel-plugin:99"),
1818
)
@@ -185,6 +185,35 @@ trait Emulator extends Cross.Module2[String, String] {
185185
}
186186
}
187187

188+
object litexgenerate extends Module {
189+
def compile = T {
190+
os.proc("firtool",
191+
generator.chirrtl().path,
192+
s"--annotation-file=${generator.chiselAnno().path}",
193+
"--disable-annotation-unknown",
194+
"-dedup",
195+
"-O=debug",
196+
"--split-verilog",
197+
"--preserve-values=named",
198+
"--output-annotation-file=mfc.anno.json",
199+
"--lowering-options=disallowLocalVariables",
200+
s"-o=${T.dest}"
201+
).call(T.dest)
202+
PathRef(T.dest)
203+
}
204+
205+
def rtls = T {
206+
os.read(compile().path / "filelist.f").split("\n").map(str =>
207+
try {
208+
os.Path(str)
209+
} catch {
210+
case e: IllegalArgumentException if e.getMessage.contains("is not an absolute path") =>
211+
compile().path / str.stripPrefix("./")
212+
}
213+
).filter(p => p.ext == "v" || p.ext == "sv").map(PathRef(_)).toSeq
214+
}
215+
}
216+
188217
object mfccompiler extends Module {
189218
def compile = T {
190219
os.proc("firtool",
@@ -233,7 +262,7 @@ trait Emulator extends Cross.Module2[String, String] {
233262
"debug_rob.cc",
234263
"emulator.cc",
235264
"remote_bitbang.cc",
236-
).map(c => PathRef(csrcDir().path / c))
265+
).map(c => PathRef(csrcDir().path / c))
237266
}
238267

239268
def CMakeListsString = T {
@@ -316,6 +345,7 @@ object emulator extends Cross[Emulator](
316345
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.DefaultBufferlessConfig"),
317346
// RocketSuiteC
318347
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.TinyConfig"),
348+
319349
// Unittest
320350
("freechips.rocketchip.unittest.TestHarness", "freechips.rocketchip.unittest.AMBAUnitTestConfig"),
321351
("freechips.rocketchip.unittest.TestHarness", "freechips.rocketchip.unittest.TLSimpleUnitTestConfig"),
@@ -343,6 +373,42 @@ object emulator extends Cross[Emulator](
343373
//
344374
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.DefaultRV32Config"),
345375
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.DefaultFP16Config"),
376+
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.DefaultBConfig"),
377+
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.DefaultRV32BConfig"),
378+
379+
// Litex
380+
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.LitexConfigSmall1x1"),
381+
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.LitexConfigSmall1x2"),
382+
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.LitexConfigSmall1x4"),
383+
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.LitexConfigSmall1x8"),
384+
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.LitexConfigSmall2x1"),
385+
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.LitexConfigSmall2x2"),
386+
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.LitexConfigSmall2x4"),
387+
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.LitexConfigSmall2x8"),
388+
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.LitexConfigSmall4x1"),
389+
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.LitexConfigSmall4x2"),
390+
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.LitexConfigSmall4x4"),
391+
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.LitexConfigSmall4x8"),
392+
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.LitexConfigSmall8x1"),
393+
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.LitexConfigSmall8x2"),
394+
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.LitexConfigSmall8x4"),
395+
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.LitexConfigSmall8x8"),
396+
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.LitexConfigBig1x1"),
397+
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.LitexConfigBig1x2"),
398+
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.LitexConfigBig1x4"),
399+
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.LitexConfigBig1x8"),
400+
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.LitexConfigBig2x1"),
401+
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.LitexConfigBig2x2"),
402+
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.LitexConfigBig2x4"),
403+
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.LitexConfigBig2x8"),
404+
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.LitexConfigBig4x1"),
405+
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.LitexConfigBig4x2"),
406+
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.LitexConfigBig4x4"),
407+
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.LitexConfigBig4x8"),
408+
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.LitexConfigBig8x1"),
409+
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.LitexConfigBig8x2"),
410+
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.LitexConfigBig8x4"),
411+
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.LitexConfigBig8x8"),
346412
)
347413

348414
object `runnable-riscv-test` extends mill.Cross[RiscvTest](
@@ -404,8 +470,8 @@ object `runnable-riscv-test` extends mill.Cross[RiscvTest](
404470
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.DefaultRV32Config", "rv32uc-v", "none"),
405471
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.DefaultRV32Config", "rv32uf-p", "none"),
406472
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.DefaultRV32Config", "rv32uf-v", "none"),
407-
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.DefaultRV32Config", "rv32ui-p", "none"),
408-
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.DefaultRV32Config", "rv32ui-v", "none"),
473+
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.DefaultRV32Config", "rv32ui-p", "ma_data"),
474+
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.DefaultRV32Config", "rv32ui-v", "ma_data"),
409475
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.DefaultRV32Config", "rv32um-p", "none"),
410476
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.DefaultRV32Config", "rv32um-v", "none"),
411477

@@ -417,11 +483,17 @@ object `runnable-riscv-test` extends mill.Cross[RiscvTest](
417483
// lsrc is not implemented if usingDataScratchpad
418484
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.TinyConfig", "rv32ua-p", "lrsc"),
419485
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.TinyConfig", "rv32uc-p", "none"),
420-
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.TinyConfig", "rv32ui-p", "none"),
486+
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.TinyConfig", "rv32ui-p", "ma_data"),
421487
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.TinyConfig", "rv32um-p", "none"),
422488

423489
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.DefaultFP16Config", "rv64uzfh-p", "none"),
424490
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.DefaultFP16Config", "rv64uzfh-v", "none"),
491+
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.DefaultBConfig", "rv64uzba-p", "none"),
492+
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.DefaultBConfig", "rv64uzbb-p", "none"),
493+
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.DefaultBConfig", "rv64uzbs-p", "none"),
494+
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.DefaultRV32BConfig", "rv32uzba-p", "none"),
495+
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.DefaultRV32BConfig", "rv32uzbb-p", "none"),
496+
("freechips.rocketchip.system.TestHarness", "freechips.rocketchip.system.DefaultRV32BConfig", "rv32uzbs-p", "none"),
425497
)
426498

427499
object `runnable-arch-test` extends mill.Cross[ArchTest](

overlay.nix

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ final: prev: {
88
});
99
riscvTests = final.pkgsCross.riscv64-embedded.stdenv.mkDerivation rec {
1010
pname = "riscv-tests";
11-
version = "55bbcc8c06637a31cc01970881ba8072838a9121";
11+
version = "f2f748ebb9cf8ea049103f85c4cbf7e8a2927b16";
1212
src = final.fetchgit {
1313
url = "https://github.com/riscv-software-src/riscv-tests.git";
1414
rev = "${version}";
1515
fetchSubmodules = true;
16-
sha256 = "sha256-TcIU+WFQxPqAG7lvfKPgHm4CnBpTkosqe+fYOxS+J7I=";
16+
sha256 = "sha256-E3RfrP+PFIYy9c/pY04jYPxeGpnfgWwjV8iwL5+s+9w=";
1717
};
1818

1919
enableParallelBuilding = true;
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
module TraceSinkMonitor
2+
#(
3+
parameter FILE_NAME = "trace_sink_monitor.txt"
4+
)
5+
(
6+
input clk,
7+
input reset,
8+
input in_fire,
9+
input[7:0] in_byte
10+
);
11+
12+
`ifndef SYNTHESIS
13+
14+
integer file;
15+
16+
initial begin
17+
file = $fopen(FILE_NAME, "w");
18+
if (file == 0) begin
19+
$display("Failed to open %s", FILE_NAME);
20+
$finish;
21+
end
22+
end
23+
24+
always @(posedge clk) begin
25+
if (in_fire & ~reset) begin
26+
$fwrite(file, "%c", in_byte);
27+
end
28+
end
29+
30+
final begin
31+
$fclose(file);
32+
end
33+
34+
`endif
35+
36+
endmodule

src/main/scala/amba/ahb/Xbar.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class AHBFanout()(implicit p: Parameters) extends LazyModule {
2121
requestKeys = seq.flatMap(_.requestKeys).distinct,
2222
responseFields = BundleField.union(seq.flatMap(_.responseFields))) }
2323
){
24-
override def circuitIdentity = outputs == 1 && inputs == 1
24+
override def circuitIdentity = outputs.size == 1 && inputs.size == 1
2525
}
2626

2727
lazy val module = new Impl

src/main/scala/amba/apb/Xbar.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class APBFanout()(implicit p: Parameters) extends LazyModule {
2121
requestKeys = seq.flatMap(_.requestKeys).distinct,
2222
responseFields = BundleField.union(seq.flatMap(_.responseFields))) }
2323
){
24-
override def circuitIdentity = outputs == 1 && inputs == 1
24+
override def circuitIdentity = outputs.size == 1 && inputs.size == 1
2525
}
2626

2727
lazy val module = new Impl

src/main/scala/amba/axi4/Buffer.scala

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,4 +68,16 @@ object AXI4Buffer
6868
val axi4buf = LazyModule(new AXI4Buffer(aw, w, b, ar, r))
6969
axi4buf.node
7070
}
71+
72+
def chain(depth: Int, name: Option[String] = None)(implicit p: Parameters): Seq[AXI4Node] = {
73+
val buffers = Seq.fill(depth) { LazyModule(new AXI4Buffer()) }
74+
name.foreach { n => buffers.zipWithIndex.foreach { case (b, i) => b.suggestName(s"${n}_${i}") } }
75+
buffers.map(_.node)
76+
}
77+
78+
def chainNode(depth: Int, name: Option[String] = None)(implicit p: Parameters): AXI4Node = {
79+
chain(depth, name)
80+
.reduceLeftOption(_ :*=* _)
81+
.getOrElse(AXI4NameNode("no_buffer"))
82+
}
7183
}

src/main/scala/amba/axi4/Xbar.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ class AXI4Xbar(
5353
)
5454
}
5555
){
56-
override def circuitIdentity = outputs == 1 && inputs == 1
56+
override def circuitIdentity = outputs.size == 1 && inputs.size == 1
5757
}
5858

5959
lazy val module = new Impl

src/main/scala/devices/debug/Debug.scala

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import freechips.rocketchip.regmapper.{RegField, RegFieldAccessType, RegFieldDes
1919
import freechips.rocketchip.rocket.{CSRs, Instructions}
2020
import freechips.rocketchip.tile.MaxHartIdBits
2121
import freechips.rocketchip.tilelink.{TLAsyncCrossingSink, TLAsyncCrossingSource, TLBuffer, TLRegisterNode, TLXbar}
22-
import freechips.rocketchip.util.{Annotated, AsyncBundle, AsyncQueueParams, AsyncResetSynchronizerShiftReg, FromAsyncBundle, ParameterizedBundle, ResetSynchronizerShiftReg, ToAsyncBundle}
22+
import freechips.rocketchip.util.{AsyncBundle, AsyncQueueParams, AsyncResetSynchronizerShiftReg, FromAsyncBundle, ParameterizedBundle, ResetSynchronizerShiftReg, ToAsyncBundle}
2323

2424
import freechips.rocketchip.util.SeqBoolBitwiseOps
2525
import freechips.rocketchip.util.SeqToAugmentedSeq
@@ -660,7 +660,7 @@ class TLDebugModuleOuter(device: Device)(implicit p: Parameters) extends LazyMod
660660
val hartResetReg = RegNext(next=hartResetNxt, init=0.U.asTypeOf(hartResetNxt))
661661

662662
for (component <- 0 until nComponents) {
663-
hartResetNxt(component) := DMCONTROLReg.hartreset & hartSelected(component)
663+
hartResetNxt(component) := DMCONTROLNxt.hartreset & hartSelected(component)
664664
io.hartResetReq.get(component) := hartResetReg(component)
665665
}
666666
}
@@ -672,7 +672,7 @@ class TLDebugModuleOuterAsync(device: Device)(implicit p: Parameters) extends La
672672

673673
val cfg = p(DebugModuleKey).get
674674

675-
val dmiXbar = LazyModule (new TLXbar())
675+
val dmiXbar = LazyModule (new TLXbar(nameSuffix = Some("dmixbar")))
676676

677677
val dmi2tlOpt = (!p(ExportDebug).apb).option({
678678
val dmi2tl = LazyModule(new DMIToTL())
@@ -789,7 +789,6 @@ class TLDebugModuleInner(device: Device, getNComponents: () => Int, beatBytes: I
789789
lazy val module = new Impl
790790
class Impl extends LazyModuleImp(this){
791791
val nComponents = getNComponents()
792-
Annotated.params(this, cfg)
793792
val supportHartArray = cfg.supportHartArray & (nComponents > 1)
794793
val nExtTriggers = cfg.nExtTriggers
795794
val nHaltGroups = if ((nComponents > 1) | (nExtTriggers > 0)) cfg.nHaltGroups

0 commit comments

Comments
 (0)