Skip to content

Commit d988246

Browse files
committed
2 parents ab275de + aae81a7 commit d988246

9 files changed

Lines changed: 55 additions & 38 deletions

File tree

src/main/resources/csrc/Cyclotron.cc

Lines changed: 36 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -338,44 +338,47 @@ void cyclotron_mem(
338338
};
339339

340340
void cyclotron_difftest_reg_rs(
341-
const uint8_t regTest_valid,
342-
const uint32_t regTest_pc,
343-
const uint8_t regTest_regs_0_enable,
344-
const uint8_t regTest_regs_0_address,
345-
const uint32_t *regTest_regs_0_data,
346-
const uint8_t regTest_regs_1_enable,
347-
const uint8_t regTest_regs_1_address,
348-
const uint32_t *regTest_regs_1_data,
349-
const uint8_t regTest_regs_2_enable,
350-
const uint8_t regTest_regs_2_address,
351-
const uint32_t *regTest_regs_2_data
341+
const uint8_t trace_valid,
342+
const uint32_t trace_pc,
343+
const uint32_t trace_warpId,
344+
const uint8_t trace_regs_0_enable,
345+
const uint8_t trace_regs_0_address,
346+
const uint32_t *trace_regs_0_data,
347+
const uint8_t trace_regs_1_enable,
348+
const uint8_t trace_regs_1_address,
349+
const uint32_t *trace_regs_1_data,
350+
const uint8_t trace_regs_2_enable,
351+
const uint8_t trace_regs_2_address,
352+
const uint32_t *trace_regs_2_data
352353
);
353354

354355
void cyclotron_difftest_reg(
355-
const uint8_t regTest_valid,
356-
const uint32_t regTest_pc,
357-
const uint8_t regTest_regs_0_enable,
358-
const uint8_t regTest_regs_0_address,
359-
const uint32_t *regTest_regs_0_data,
360-
const uint8_t regTest_regs_1_enable,
361-
const uint8_t regTest_regs_1_address,
362-
const uint32_t *regTest_regs_1_data,
363-
const uint8_t regTest_regs_2_enable,
364-
const uint8_t regTest_regs_2_address,
365-
const uint32_t *regTest_regs_2_data
356+
const uint8_t trace_valid,
357+
const uint32_t trace_pc,
358+
const uint32_t trace_warpId,
359+
const uint8_t trace_regs_0_enable,
360+
const uint8_t trace_regs_0_address,
361+
const uint32_t *trace_regs_0_data,
362+
const uint8_t trace_regs_1_enable,
363+
const uint8_t trace_regs_1_address,
364+
const uint32_t *trace_regs_1_data,
365+
const uint8_t trace_regs_2_enable,
366+
const uint8_t trace_regs_2_address,
367+
const uint32_t *trace_regs_2_data
366368
) {
367369
cyclotron_difftest_reg_rs(
368-
regTest_valid,
369-
regTest_pc,
370-
regTest_regs_0_enable,
371-
regTest_regs_0_address,
372-
regTest_regs_0_data,
373-
regTest_regs_1_enable,
374-
regTest_regs_1_address,
375-
regTest_regs_1_data,
376-
regTest_regs_2_enable,
377-
regTest_regs_2_address,
378-
regTest_regs_2_data
370+
trace_valid,
371+
trace_pc,
372+
trace_warpId,
373+
trace_regs_0_enable,
374+
trace_regs_0_address,
375+
trace_regs_0_data,
376+
trace_regs_1_enable,
377+
trace_regs_1_address,
378+
trace_regs_1_data,
379+
trace_regs_2_enable,
380+
trace_regs_2_address,
381+
trace_regs_2_data
379382
);
380383
}
381384

src/main/resources/vsrc/Cyclotron.vh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import "DPI-C" function string vpi_get_binary();
1111
import "DPI-C" function cyclotron_difftest_reg(
1212
input bit trace_valid,
1313
input int trace_pc,
14+
input int trace_warpId,
1415
input bit trace_regs_0_enable,
1516
input byte trace_regs_0_address,
1617
input int trace_regs_0_data[NUM_LANES],

src/main/resources/vsrc/CyclotronDiffTest.v

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ module CyclotronDiffTestBlackBox #(
1818

1919
input logic trace_valid,
2020
input logic [ARCH_LEN-1:0] trace_pc,
21+
input logic [WARP_ID_BITS-1:0] trace_warpId,
2122
input logic trace_regs_0_enable,
2223
input logic [REG_BITS-1:0] trace_regs_0_address,
2324
input logic [(NUM_LANES*ARCH_LEN)-1:0] trace_regs_0_data,
@@ -36,6 +37,7 @@ module CyclotronDiffTestBlackBox #(
3637
// need to be in ascending order to match with C array memory layout
3738
bit __out_trace_valid;
3839
int __out_trace_pc;
40+
int __out_trace_warpId;
3941
bit __out_trace_regs_0_enable;
4042
byte __out_trace_regs_0_address;
4143
int __out_trace_regs_0_data [0:NUM_LANES-1];
@@ -61,6 +63,7 @@ module CyclotronDiffTestBlackBox #(
6163
// connect regtrace signals
6264
assign __out_trace_valid = trace_valid;
6365
assign __out_trace_pc = trace_pc;
66+
assign __out_trace_warpId = trace_warpId;
6467
assign __out_trace_regs_0_enable = trace_regs_0_enable;
6568
assign __out_trace_regs_0_address = trace_regs_0_address;
6669
assign __out_trace_regs_1_enable = trace_regs_1_enable;
@@ -82,6 +85,7 @@ module CyclotronDiffTestBlackBox #(
8285
cyclotron_difftest_reg(
8386
__out_trace_valid,
8487
__out_trace_pc,
88+
__out_trace_warpId,
8589
__out_trace_regs_0_enable,
8690
__out_trace_regs_0_address,
8791
__out_trace_regs_0_data,

src/main/scala/radiance/muon/Backend.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ class Backend(
102102
io.trace.foreach { traceIO =>
103103
traceIO.valid := issued.fire
104104
traceIO.bits.pc := issued.bits.uop.pc
105+
traceIO.bits.warpId := issued.bits.uop.wid
105106
(traceIO.bits.regs zip operands)
106107
.zipWithIndex.foreach { case ((tReg, opnd), rsi) =>
107108
tReg.enable := issued.bits.uop.inst(haves(rsi))

src/main/scala/radiance/muon/MuonCore.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,7 @@ class InstMemIO(implicit val p: Parameters) extends ParameterizedBundle()(p) wit
288288
* issue time. */
289289
class TraceIO()(implicit p: Parameters) extends CoreBundle()(p) {
290290
val pc = pcT
291+
val warpId = widT
291292
val regs = Vec(Isa.maxNumRegs, new Bundle {
292293
val enable = Bool()
293294
val address = pRegT

src/main/scala/radiance/muon/MuonTile.scala

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import org.chipsalliance.diplomacy.lazymodule.LazyModule
1414
import radiance.cluster.SoftResetFinishNode
1515
import radiance.memory._
1616
import radiance.subsystem._
17+
import radiance.unittest.CyclotronDiffTest
1718

1819
case object NumMuonCores extends Field[Int](0)
1920

@@ -297,8 +298,8 @@ class MuonTile(
297298
}
298299

299300
class MuonTileModuleImp(outer: MuonTile) extends BaseTileModuleImp(outer) {
301+
val muon = Module(new MuonCore(test = true))
300302

301-
val muon = Module(new MuonCore())
302303
MuonMemTL.connectTL(muon.io.imem.req, muon.io.imem.resp, outer.icacheWordNode)
303304

304305
MuonMemTL.multiConnectTL(muon.io.dmem.req, muon.io.dmem.resp, outer.innerLsuNodes)
@@ -315,4 +316,7 @@ class MuonTileModuleImp(outer: MuonTile) extends BaseTileModuleImp(outer) {
315316

316317
muon.io.softReset := outer.softResetFinishSlave.in.head._1.softReset
317318
outer.softResetFinishSlave.in.head._1.finished := muon.io.finished
319+
320+
val cdiff = Module(new CyclotronDiffTest)
321+
cdiff.io.trace <> muon.io.trace.get
318322
}

src/main/scala/radiance/unittest/Muon.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -968,6 +968,7 @@ class CyclotronDiffTest(implicit p: Parameters) extends CoreModule {
968968

969969
cbox.io.trace.valid := io.trace.valid
970970
cbox.io.trace.pc := io.trace.bits.pc
971+
cbox.io.trace.warpId := io.trace.bits.warpId
971972
(cbox.io.trace.regs zip io.trace.bits.regs).foreach { case (boxtr, tr) =>
972973
boxtr.enable := tr.enable
973974
boxtr.address := tr.address
@@ -984,6 +985,7 @@ with HasBlackBoxResource with HasCoreParameters {
984985
val trace = Input(new Bundle {
985986
val valid = Bool()
986987
val pc = pcT
988+
val warpId = widT
987989
val regs = Vec(Isa.maxNumRegs, new Bundle {
988990
val enable = Bool()
989991
val address = pRegT

test/run_isa_tests.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -129,9 +129,10 @@ def finalize_test(test: RunningTest, status: int) -> int:
129129
return 1
130130

131131
errstring = log_has_error(test.log_path).rstrip("\n")
132-
if status == 0 and errstring:
133-
print(f"[{myname}] FAIL: {test.elf}")
134-
print(f"{errstring}")
132+
if status != 0 or errstring:
133+
print(f"[{myname}] FAIL: {test.elf} (status: {status})")
134+
if errstring:
135+
print(f"{errstring}")
135136
return 1
136137
return status
137138
finally:

0 commit comments

Comments
 (0)