summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlejandro Soto <alejandro@34project.org>2022-09-18 17:17:02 -0600
committerAlejandro Soto <alejandro@34project.org>2022-09-18 17:17:02 -0600
commit4dc4e712b21fcf08143005a56b1501f53c127a67 (patch)
treed3f9c43a36136e30f7a817204c320dc009cbaa65
parent503957e2883e754fc8424c420c3d9838bd639ed3 (diff)
Fix public_flat_rw signals
-rw-r--r--pitfalls.txt12
-rw-r--r--tb/platform.sv4
2 files changed, 14 insertions, 2 deletions
diff --git a/pitfalls.txt b/pitfalls.txt
index 9cca2c2..b77168e 100644
--- a/pitfalls.txt
+++ b/pitfalls.txt
@@ -16,3 +16,15 @@ pin_assignments.tcl . Select that script, run it and try and compile the
project again
Nota: es *_pin_assignments.tcl y no ningún otro
+
+ ===
+ [II] Emulación de Avalon
+ ===
+
+Para las señales fuera del top que C++ escribe, por ejemplo en tb/platform.sv,
+se necesita /*verilator public_flat_rw @(negedge clk_clk)*/ en vez de
+/*verilator public*/ (la última igual se usa para señales que C++ lee). Poner
+lo segundo en una señal `s` hace que `assign a = s;` no tenga ningún efecto,
+lo cual es difícil de depurar.
+
+https://github.com/verilator/verilator/issues/2262
diff --git a/tb/platform.sv b/tb/platform.sv
index 10df2e0..7c2ef90 100644
--- a/tb/platform.sv
+++ b/tb/platform.sv
@@ -28,9 +28,9 @@ module platform (
logic[31:0] avl_address /*verilator public*/;
logic avl_read /*verilator public*/;
logic avl_write /*verilator public*/;
- logic[31:0] avl_readdata /*verilator public*/;
+ logic[31:0] avl_readdata /*verilator public_flat_rw @(negedge clk_clk)*/;
logic[31:0] avl_writedata /*verilator public*/;
- logic avl_waitrequest /*verilator public*/;
+ logic avl_waitrequest /*verilator public_flat_rw @(negedge clk_clk)*/;
logic[3:0] avl_byteenable /*verilator public*/;
bus_master master_0