Merged Lanes
Merged Minx16 into UserProjectExample openlane scripts for CPU build flow. Simulated Dflop mem for ram macros. Macro ram to be included in near future
diff --git a/openlane/user_Minx16/config.json b/openlane/user_Minx16/config.json
deleted file mode 100644
index 055b66d..0000000
--- a/openlane/user_Minx16/config.json
+++ /dev/null
@@ -1,49 +0,0 @@
-{
- "DESIGN_NAME": "Minx16Top",
- "DESIGN_IS_CORE": 0,
- "VERILOG_FILES": ["dir::../../verilog/rtl/defines.v", "dir::../../verilog/rtl/Minx16/*"],
- "MACRO_PLACEMENT_CFG": "dir::macro.cfg",
- "VERILOG_FILES_BLACKBOX": ["dir::../../verilog/rtl/gf180mcu_fd_ip_sram/gf180mcu_fd_ip_sram__sram512x8m8wm1.v"],
- "EXTRA_LEFS": "dir::../../lef/gf180mcu_fd_ip_sram__sram512x8m8wm1.lef",
- "EXTRA_GDS_FILES": "dir::../../gds/gf180mcu_fd_ip_sram__sram512x8m8wm1.gds",
- "CLOCK_PERIOD": 100,
- "CLOCK_PORT": "clk_i",
- "CLOCK_NET": "Minx16Top.clk_i",
- "FP_SIZING": "absolute",
- "DIE_AREA": "0 0 2000 2000",
- "FP_PIN_ORDER_CFG": "dir::pin_order.cfg",
- "PL_BASIC_PLACEMENT": 0,
- "PL_TARGET_DENSITY": 0.50,
- "VDD_NETS": ["vccd1"],
- "GND_NETS": ["vssd1"],
- "DIODE_INSERTION_STRATEGY": 4,
- "RUN_CVC": 1,
- "pdk::sky130*": {
- "FP_CORE_UTIL": 45,
- "RT_MAX_LAYER": "met4",
- "scl::sky130_fd_sc_hd": {
- "CLOCK_PERIOD": 10
- },
- "scl::sky130_fd_sc_hdll": {
- "CLOCK_PERIOD": 10
- },
- "scl::sky130_fd_sc_hs": {
- "CLOCK_PERIOD": 8
- },
- "scl::sky130_fd_sc_ls": {
- "CLOCK_PERIOD": 10,
- "SYNTH_MAX_FANOUT": 5
- },
- "scl::sky130_fd_sc_ms": {
- "CLOCK_PERIOD": 10
- }
- },
- "pdk::gf180mcuC": {
- "STD_CELL_LIBRARY": "gf180mcu_fd_sc_mcu7t5v0",
- "CLOCK_PERIOD": 50.0,
- "FP_CORE_UTIL": 40,
- "RT_MAX_LAYER": "Metal4",
- "SYNTH_MAX_FANOUT": 4,
- "PL_TARGET_DENSITY": 0.45
- }
-}
\ No newline at end of file
diff --git a/openlane/user_Minx16/macro.cfg b/openlane/user_Minx16/macro.cfg
deleted file mode 100644
index d1567a8..0000000
--- a/openlane/user_Minx16/macro.cfg
+++ /dev/null
@@ -1,4 +0,0 @@
-oddMemHigh 250.0000 250.00 N
-oddMemLow 250.0000 1000.00 N
-evenMemHigh 1000.0000 250.00 N
-evenMemLow 1000.0000 1000.00 N
diff --git a/openlane/user_Minx16/pin_order.cfg b/openlane/user_Minx16/pin_order.cfg
deleted file mode 100644
index 603257a..0000000
--- a/openlane/user_Minx16/pin_order.cfg
+++ /dev/null
@@ -1,76 +0,0 @@
-#BUS_SORT
-
-#N
-dbus_ADBus_i\[7\]
-dbus_ADBus_o\[7\]
-dbus_ADBus_e\[7\]
-dbus_ADBus_i\[6\]
-dbus_ADBus_o\[6\]
-dbus_ADBus_e\[6\]
-dbus_ADBus_i\[5\]
-dbus_ADBus_o\[5\]
-dbus_ADBus_e\[5\]
-dbus_ADBus_i\[4\]
-dbus_ADBus_o\[4\]
-dbus_ADBus_e\[4\]
-dbus_ADBus_i\[3\]
-dbus_ADBus_o\[3\]
-dbus_ADBus_e\[3\]
-dbus_ADBus_i\[2\]
-dbus_ADBus_o\[2\]
-dbus_ADBus_e\[2\]
-dbus_ADBus_i\[1\]
-dbus_ADBus_o\[1\]
-dbus_ADBus_e\[1\]
-dbus_ADBus_i\[0\]
-dbus_ADBus_o\[0\]
-dbus_ADBus_e\[0\]
-dbus_ale_o
-dbus_ale_e
-
-#W
-dbus_dle_o
-dbus_dle_e
-dbus_stb_o\[1\]
-dbus_stb_e\[1\]
-dbus_stb_o\[0\]
-dbus_stb_e\[0\]
-dbus_rd_o
-dbus_rd_e
-dbus_wr_o
-dbus_wr_e
-dbus_rdy_i
-dbus_req_i
-dbus_ack_o
-intr_i
-inta_o
-
-#E
-dbus_ADBus_i\[8\]
-dbus_ADBus_o\[8\]
-dbus_ADBus_e\[8\]
-dbus_ADBus_i\[9\]
-dbus_ADBus_o\[9\]
-dbus_ADBus_e\[9\]
-dbus_ADBus_i\[10\]
-dbus_ADBus_o\[10\]
-dbus_ADBus_e\[10\]
-dbus_ADBus_i\[11\]
-dbus_ADBus_o\[11\]
-dbus_ADBus_e\[11\]
-dbus_ADBus_i\[12\]
-dbus_ADBus_o\[12\]
-dbus_ADBus_e\[12\]
-dbus_ADBus_i\[13\]
-dbus_ADBus_o\[13\]
-dbus_ADBus_e\[13\]
-dbus_ADBus_i\[14\]
-dbus_ADBus_o\[14\]
-dbus_ADBus_e\[14\]
-dbus_ADBus_i\[15\]
-dbus_ADBus_o\[15\]
-dbus_ADBus_e\[15\]
-rst_i
-clk_i
-nmir_i
-nmia_o
diff --git a/openlane/user_proj_example/config.json b/openlane/user_proj_example/config.json
index 370d74c..dc0104c 100644
--- a/openlane/user_proj_example/config.json
+++ b/openlane/user_proj_example/config.json
@@ -1,12 +1,12 @@
{
"DESIGN_NAME": "user_proj_example",
"DESIGN_IS_CORE": 0,
- "VERILOG_FILES": ["dir::../../verilog/rtl/defines.v", "dir::../../verilog/rtl/user_proj_example.v"],
- "CLOCK_PERIOD": 10,
- "CLOCK_PORT": "wb_clk_i",
- "CLOCK_NET": "counter.clk",
+ "VERILOG_FILES": ["dir::../../verilog/rtl/defines.v", "dir::../../verilog/rtl/user_proj_example.v", "dir::../../verilog/rtl/Minx16/*"],
+ "CLOCK_PERIOD": 50,
+ "CLOCK_PORT": "wb_clk_i, clk_i",
+ "CLOCK_NET": "counter.clk, cpu16.clk_i",
"FP_SIZING": "absolute",
- "DIE_AREA": "0 0 900 600",
+ "DIE_AREA": "0 0 2300 2300",
"FP_PIN_ORDER_CFG": "dir::pin_order.cfg",
"PL_BASIC_PLACEMENT": 0,
"PL_TARGET_DENSITY": 0.55,
@@ -36,7 +36,7 @@
},
"pdk::gf180mcuC": {
"STD_CELL_LIBRARY": "gf180mcu_fd_sc_mcu7t5v0",
- "CLOCK_PERIOD": 24.0,
+ "CLOCK_PERIOD": 50.0,
"FP_CORE_UTIL": 40,
"RT_MAX_LAYER": "Metal4",
"SYNTH_MAX_FANOUT": 4,
diff --git a/openlane/user_proj_example/pin_order.cfg b/openlane/user_proj_example/pin_order.cfg
index 2fda806..c6f0dc8 100644
--- a/openlane/user_proj_example/pin_order.cfg
+++ b/openlane/user_proj_example/pin_order.cfg
@@ -7,4 +7,124 @@
irq.*
#N
-io_.*
+io_in\[23\]
+io_out\[23\]
+io_oeb\[23\]
+io_in\[22\]
+io_out\[22\]
+io_oeb\[22\]
+io_in\[21\]
+io_out\[21\]
+io_oeb\[21\]
+io_in\[20\]
+io_out\[20\]
+io_oeb\[20\]
+io_in\[19\]
+io_out\[19\]
+io_oeb\[19\]
+io_in\[18\]
+io_out\[18\]
+io_oeb\[18\]
+io_in\[17\]
+io_out\[17\]
+io_oeb\[17\]
+io_in\[16\]
+io_out\[16\]
+io_oeb\[16\]
+io_in\[15\]
+io_out\[15\]
+io_oeb\[15\]
+
+#W
+io_in\[14\]
+io_out\[14\]
+io_oeb\[14\]
+io_in\[13\]
+io_out\[13\]
+io_oeb\[13\]
+io_in\[12\]
+io_out\[12\]
+io_oeb\[12\]
+io_in\[11\]
+io_out\[11\]
+io_oeb\[11\]
+io_in\[10\]
+io_out\[10\]
+io_oeb\[10\]
+io_in\[9\]
+io_out\[9\]
+io_oeb\[9\]
+io_in\[8\]
+io_out\[8\]
+io_oeb\[8\]
+io_in\[7\]
+io_out\[7\]
+io_oeb\[7\]
+io_in\[6\]
+io_out\[6\]
+io_oeb\[6\]
+io_in\[5\]
+io_out\[5\]
+io_oeb\[5\]
+io_in\[4\]
+io_out\[4\]
+io_oeb\[4\]
+io_in\[3\]
+io_out\[3\]
+io_oeb\[3\]
+io_in\[2\]
+io_out\[2\]
+io_oeb\[2\]
+io_in\[1\]
+io_out\[1\]
+io_oeb\[1\]
+io_in\[0\]
+io_out\[0\]
+io_oeb\[0\]
+
+#E
+io_in\[24\]
+io_out\[24\]
+io_oeb\[24\]
+io_in\[25\]
+io_out\[25\]
+io_oeb\[25\]
+io_in\[26\]
+io_out\[26\]
+io_oeb\[26\]
+io_in\[27\]
+io_out\[27\]
+io_oeb\[27\]
+io_in\[28\]
+io_out\[28\]
+io_oeb\[28\]
+io_in\[29\]
+io_out\[29\]
+io_oeb\[29\]
+io_in\[30\]
+io_out\[30\]
+io_oeb\[30\]
+io_in\[31\]
+io_out\[31\]
+io_oeb\[31\]
+io_in\[32\]
+io_out\[32\]
+io_oeb\[32\]
+io_in\[33\]
+io_out\[33\]
+io_oeb\[33\]
+io_in\[34\]
+io_out\[34\]
+io_oeb\[34\]
+io_in\[35\]
+io_out\[35\]
+io_oeb\[35\]
+io_in\[36\]
+io_out\[36\]
+io_oeb\[36\]
+io_in\[37\]
+io_out\[37\]
+io_oeb\[37\]
+io_in\[38\]
+io_out\[38\]
+io_oeb\[38\]
diff --git a/verilog/rtl/Minx16/scb.v b/verilog/rtl/Minx16/scb.v
index 0327be0..a652719 100644
--- a/verilog/rtl/Minx16/scb.v
+++ b/verilog/rtl/Minx16/scb.v
@@ -1,4 +1,5 @@
-//Design for 1024x16 or 2kb of onboard memory scratchpad
+//Design for 0x0800 of onboard memory scratchpad
+//
module SCB_memory (
input clk_i
, input rst_i
@@ -32,7 +33,8 @@
assign scb_rdy_o = 1'b1;
assign scb_Data_o = (highSelect) ? dboh :dbol;
- gf180mcu_fd_ip_sram__sram512x8m8wm1 oddMemLow (
+ //gf180mcu_fd_ip_sram__sram512x8m8wm1 oddMemLow (
+ dfsimpleram #(9, 8) oddMemLow (
.CLK (clk_i)
, .CEN (~(oddSelect & lowSelect))
, .GWEN(~scb_ce_i | scb_wr_i)
@@ -42,7 +44,8 @@
, .Q (dbolo)
);
- gf180mcu_fd_ip_sram__sram512x8m8wm1 oddMemHigh (
+ //gf180mcu_fd_ip_sram__sram512x8m8wm1 oddMemHigh (
+ dfsimpleram #(9, 8) oddMemHigh (
.CLK (clk_i)
, .CEN (~(oddSelect & highSelect))
, .GWEN(~scb_ce_i | scb_wr_i)
@@ -52,7 +55,8 @@
, .Q (dbohi)
);
- gf180mcu_fd_ip_sram__sram512x8m8wm1 evenMemLow (
+ //gf180mcu_fd_ip_sram__sram512x8m8wm1 evenMemLow (
+ dfsimpleram #(9, 8) evenMemLow (
.CLK (clk_i)
, .CEN (~(evenSelect & lowSelect))
, .GWEN(~scb_ce_i | scb_wr_i)
@@ -62,7 +66,8 @@
, .Q (dbelo)
);
- gf180mcu_fd_ip_sram__sram512x8m8wm1 evenMemHigh(
+ //gf180mcu_fd_ip_sram__sram512x8m8wm1 evenMemHigh (
+ dfsimpleram #(9, 8) evenMemHigh(
.CLK (clk_i)
, .CEN (~(evenSelect & highSelect))
, .GWEN(~scb_ce_i | scb_wr_i)
@@ -74,3 +79,28 @@
endmodule
+module dfsimpleram #(
+ parameter A = 8
+, parameter D = 8
+) (
+ input CLK
+
+, input [A-1:0] A
+, input [D-1:0] D
+, output reg [D-1:0] Q
+, input CEN
+, input GWEN
+, input [D-1:0] WEN
+);
+
+ reg [D-1:0] mem [2**A-1:0];
+
+ always @ (posedge clk)
+ if( cen == 1'b0 )
+ dbo = mem[addr];
+
+ always @ (posedge clk)
+ if( gwen == 1'b0 && cen == 1'b0 )
+ mem[addr] = dbi;
+
+endmodule
diff --git a/verilog/rtl/user_proj_example.v b/verilog/rtl/user_proj_example.v
index 95654f8..f07e702 100644
--- a/verilog/rtl/user_proj_example.v
+++ b/verilog/rtl/user_proj_example.v
@@ -104,9 +104,10 @@
wire [`MPRJ_IO_PADS-1:0] io_oeb;
wire [1:0] mode = io_in[37:36];
+ wire clk_i = io_in [33];
Minx16Top cpu16 (
- .clk_i (io_in [33])
+ .clk_i (clk_i)
, .rst_i (io_in [32])
, .dbus_ADBus_i(io_in [31:16])
@@ -135,37 +136,6 @@
endmodule
-(* blackbox *)
-module Minx16Top (
- input clk_i
-, input rst_i
-
-, input [15:0] dbus_ADBus_i
-, output wire [15:0] dbus_ADBus_o
-, output wire [15:0] dbus_ADBus_e
-, output wire dbus_ale_o
-, output wire dbus_ale_e
-, output wire dbus_dle_o
-, output wire dbus_dle_e
-, output wire [ 1:0] dbus_stb_o
-, output wire [ 1:0] dbus_stb_e
-, output wire dbus_rd_o
-, output wire dbus_rd_e
-, output wire dbus_wr_o
-, output wire dbus_wr_e
-, input dbus_rdy_i
-
-, input dbus_req_i
-, output wire dbus_ack_o
-
-, input intr_i
-, output wire inta_o
-, input nmir_i
-, output wire nmia_o
-);
-
-endmodule
-
module counter #(
parameter BITS = 32
)(