wip GL sim
diff --git a/verilog/dv/caravel/rapcore/io_ports/Makefile b/verilog/dv/caravel/rapcore/io_ports/Makefile
index d07edeb..e90264d 100644
--- a/verilog/dv/caravel/rapcore/io_ports/Makefile
+++ b/verilog/dv/caravel/rapcore/io_ports/Makefile
@@ -14,7 +14,7 @@
GCC_PREFIX?=riscv32-unknown-elf
PDK_PATH?=$(PDK_ROOT)/sky130A
-SIM?=RTL
+SIM?=GL
.SUFFIXES:
@@ -40,7 +40,7 @@
%.vcd: %.vvp
- vvp $<
+ vvp $< -fst
%.elf: %.c $(FIRMWARE_PATH)/sections.lds $(FIRMWARE_PATH)/start.s
${GCC_PATH}/${GCC_PREFIX}-gcc -march=rv32imc -mabi=ilp32 -Wl,-Bstatic,-T,$(FIRMWARE_PATH)/sections.lds,--strip-debug -ffreestanding -nostdlib -o $@ $(FIRMWARE_PATH)/start.s $<
diff --git a/verilog/dv/caravel/rapcore/io_ports/io_ports_tb.v b/verilog/dv/caravel/rapcore/io_ports/io_ports_tb.v
index 163af61..3100231 100644
--- a/verilog/dv/caravel/rapcore/io_ports/io_ports_tb.v
+++ b/verilog/dv/caravel/rapcore/io_ports/io_ports_tb.v
@@ -45,6 +45,7 @@
wire [7:0] mprj_io_0;
assign mprj_io_0 = mprj_io[7:0];
+ assign mprj_io[3] = 1'b1;
// External clock is used by default. Make this artificially fast for the
// simulation. Normally this would be a slow clock and the digital PLL
@@ -73,18 +74,18 @@
initial begin
// Observe Output pins [7:0]
- wait(mprj_io_0 == 8'h01);
- wait(mprj_io_0 == 8'h02);
- wait(mprj_io_0 == 8'h03);
- wait(mprj_io_0 == 8'h04);
- wait(mprj_io_0 == 8'h05);
- wait(mprj_io_0 == 8'h06);
- wait(mprj_io_0 == 8'h07);
- wait(mprj_io_0 == 8'h08);
- wait(mprj_io_0 == 8'h09);
- wait(mprj_io_0 == 8'h0A);
- wait(mprj_io_0 == 8'hFF);
- wait(mprj_io_0 == 8'h00);
+ wait(mprj_io_0 == 8'h01);
+ wait(mprj_io_0 == 8'h02);
+ wait(mprj_io_0 == 8'h03);
+ wait(mprj_io_0 == 8'h04);
+ wait(mprj_io_0 == 8'h05);
+ wait(mprj_io_0 == 8'h06);
+ wait(mprj_io_0 == 8'h07);
+ wait(mprj_io_0 == 8'h08);
+ wait(mprj_io_0 == 8'h09);
+ wait(mprj_io_0 == 8'h0A);
+ wait(mprj_io_0 == 8'hFF);
+ wait(mprj_io_0 == 8'h00);
$display("Monitor: Test 1 Mega-Project IO (RTL) Passed");
$finish;
@@ -96,19 +97,19 @@
RSTB <= 1'b1; // Release reset
end
+ reg bootdone = 1'b0;
initial begin // Power-up sequence
power1 <= 1'b0;
power2 <= 1'b0;
power3 <= 1'b0;
power4 <= 1'b0;
- #200;
+ #400
power1 <= 1'b1;
- #200;
power2 <= 1'b1;
- #200;
power3 <= 1'b1;
- #200;
power4 <= 1'b1;
+ #400000;
+ bootdone <= 1'b1;
end
always @(mprj_io) begin
@@ -168,7 +169,7 @@
.DIRINPUT(mprj_io[33]),
.ENINPUT(mprj_io[11]),
.ENOUTPUT(mprj_io[10]),
- .BOOT_DONE_IN(mprj_io[15])
+ .BOOT_DONE_IN(bootdone)
);
diff --git a/verilog/rtl/caravel.v b/verilog/rtl/caravel.v
index fa85ee2..00a9fb3 100644
--- a/verilog/rtl/caravel.v
+++ b/verilog/rtl/caravel.v
@@ -516,7 +516,7 @@
/* Wrapper module around the user project */
/*----------------------------------------------*/
- user_project_wrapper mprj (
+ user_project_wrapper mprj (
`ifdef USE_POWER_PINS
.vdda1(vdda1), // User area 1 3.3V power
.vdda2(vdda2), // User area 2 3.3V power
diff --git a/verilog/rtl/user_project_wrapper.v b/verilog/rtl/user_project_wrapper.v
index 737db20..5f45b14 100644
--- a/verilog/rtl/user_project_wrapper.v
+++ b/verilog/rtl/user_project_wrapper.v
@@ -66,18 +66,17 @@
rapcores rapcores0 (
-`ifndef SIM
+
`ifdef USE_POWER_PINS
- .vdda1(vdda1), // User area 1 3.3V power
- .vdda2(vdda2), // User area 2 3.3V power
- .vssa1(vssa1), // User area 1 analog ground
- .vssa2(vssa2), // User area 2 analog ground
+ //.vdda1(vdda1), // User area 1 3.3V power
+ //.vdda2(vdda2), // User area 2 3.3V power
+ //.vssa1(vssa1), // User area 1 analog ground
+ //.vssa2(vssa2), // User area 2 analog ground
.vccd1(vccd1), // User area 1 1.8V power
- .vccd2(vccd2), // User area 2 1.8V power
+ //.vccd2(vccd2), // User area 2 1.8V power
.vssd1(vssd1), // User area 1 digital ground
- .vssd2(vssd2), // User area 2 digital ground
+ //.vssd2(vssd2), // User area 2 digital ground
`endif
-`endif
// MGMT core clock and reset
.wb_clk_i(wb_clk_i),