Test of the FU-FU matrix 30x30 with Coriolis matrixplacer.
authorJean-Paul Chaput <Jean-Paul.Chaput@lip6.fr>
Sat, 6 Jun 2020 10:03:15 +0000 (12:03 +0200)
committerJean-Paul Chaput <Jean-Paul.Chaput@lip6.fr>
Sat, 6 Jun 2020 10:03:15 +0000 (12:03 +0200)
experiments8/Makefile [new file with mode: 0755]
experiments8/RESULTS.txt [new file with mode: 0644]
experiments8/coriolis2/__init__.py [new file with mode: 0644]
experiments8/coriolis2/katana.py [new file with mode: 0644]
experiments8/coriolis2/settings.py [new file with mode: 0644]
experiments8/test_fu_fu_matrix.il
experiments8/test_fu_reg_matrix.il
experiments8/test_mem_fus.il

diff --git a/experiments8/Makefile b/experiments8/Makefile
new file mode 100755 (executable)
index 0000000..e022332
--- /dev/null
@@ -0,0 +1,32 @@
+        LOGICAL_SYNTHESIS = Yosys
+       PHYSICAL_SYNTHESIS = Coriolis
+               DESIGN_KIT = sxlib
+
+            USE_CLOCKTREE = No
+                USE_DEBUG = No
+                 USE_KITE = No
+                VST_FLAGS = --vst-use-concat
+
+                 NETLISTS = test_fu_fu_matrix
+
+
+ include ./mk/design-flow.mk
+
+
+%_flat.vst: %.vst ;  $(FLATLO) -r $* $*_flat
+
+
+blif:      test_fu_fu_matrix.blif
+vst:       test_fu_fu_matrix.vst
+vstf:      test_fu_fu_matrix_flat.vst
+
+#blif:      test_fu_reg_matrix.blif
+#vst:       test_fu_reg_matrix.vst
+#layout:    test_fu_reg_matrix_r.ap
+#gds:       test_fu_reg_matrix_r.gds
+#
+#lvx:       lvx-test_fu_reg_matrix_r
+#druc:      druc-test_fu_reg_matrix_r
+#view:      cgt-test_fu_reg_matrix_r
+viewf:     cgt-test_fu_fu_matrix_flat
+#sim:       asimut-test_fu_reg_matrix_r
diff --git a/experiments8/RESULTS.txt b/experiments8/RESULTS.txt
new file mode 100644 (file)
index 0000000..86dbc99
--- /dev/null
@@ -0,0 +1,21 @@
+
+  Matrix placement:
+    8630 x 9000  we can suppress 50*30 to compensate for the 30
+                 empty rows. So, 8630*7500
+                 Areas: 77670000
+                        64725000 (83%) -> linear ratio sgrt(.83) = .91
+                                          for wire shrink.
+    Wirelength: 10971965
+    Events:     283040 (6 repairs) 
+
+  Automated placement: (5% margin)
+
+    7300 x 7350 Area: 53655000
+
+    Wirelength: 9253708
+    Events:     247879 (0 repairs)
+
+  Ratios: Manual vs. automated:
+
+    Areas:      1.206 (i.e. ~21% increase in area).
+    Wirelength: 1.078 
diff --git a/experiments8/coriolis2/__init__.py b/experiments8/coriolis2/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/experiments8/coriolis2/katana.py b/experiments8/coriolis2/katana.py
new file mode 100644 (file)
index 0000000..13768a0
--- /dev/null
@@ -0,0 +1,7 @@
+from Hurricane import DebugSession
+
+#DebugSession.addToTrace( katana.getCell().getNet( 'add_o(1)' ) )
+#DebugSession.addToTrace( katana.getCell().getNet( 'add_o(2)' ) )
+#DebugSession.addToTrace( katana.getCell().getNet( 'b(3)' ) )
+#DebugSession.addToTrace( katana.getCell().getNet( 'b(15)' ) )
+#DebugSession.addToTrace( katana.getCell().getNet( 'add_o(12)' ) )
diff --git a/experiments8/coriolis2/settings.py b/experiments8/coriolis2/settings.py
new file mode 100644 (file)
index 0000000..a225c6d
--- /dev/null
@@ -0,0 +1,37 @@
+# -*- Mode:Python -*-
+
+import Cfg
+import CRL
+import Viewer
+import symbolic.cmos  # do not remove
+
+
+Cfg.Configuration.pushDefaultPriority(Cfg.Parameter.Priority.UserFile)
+
+Viewer.Graphics.setStyle('Alliance.Classic [black]')
+
+Cfg.getParamBool('misc.catchCore').setBool(False)
+Cfg.getParamBool('misc.info').setBool(False)
+Cfg.getParamBool('misc.paranoid').setBool(False)
+Cfg.getParamBool('misc.bug').setBool(False)
+Cfg.getParamBool('misc.logMode').setBool(True)
+Cfg.getParamBool('misc.verboseLevel1').setBool(True)
+Cfg.getParamBool('misc.verboseLevel2').setBool(True)
+Cfg.getParamEnumerate('etesian.effort').setInt(2)
+Cfg.getParamPercentage('etesian.spaceMargin').setPercentage(1.0)
+Cfg.getParamPercentage('etesian.aspectRatio').setPercentage(100.0)
+Cfg.getParamBool('etesian.uniformDensity').setBool(True)
+Cfg.getParamInt('anabatic.edgeLenght').setInt(24)
+Cfg.getParamInt('anabatic.edgeWidth').setInt(8)
+Cfg.getParamString('anabatic.topRoutingLayer').setString('METAL5')
+Cfg.getParamInt('katana.eventsLimit').setInt(1000000)
+Cfg.getParamInt('katana.hTracksReservedLocal').setInt(7)
+Cfg.getParamInt('katana.vTracksReservedLocal').setInt(6)
+
+Cfg.Configuration.popDefaultPriority()
+
+af = CRL.AllianceFramework.get()
+env = af.getEnvironment()
+env.setCLOCK('^clk$|m_clock')
+env.setPOWER('vdd')
+env.setGROUND('vss')
index 3a10e69668cb8c26ade827047529cedaadb615c6..a5c3704e6d7e428e2fef754de628ec3b0dd36b57 100644 (file)
@@ -37110,8 +37110,8 @@ module \fur_x29
 end
 attribute \generator "nMigen"
 attribute \top 1
-attribute \nmigen.hierarchy "top"
-module \top
+attribute \nmigen.hierarchy "test_fu_fu_matrix"
+module \test_fu_fu_matrix
   attribute \src "scoremulti/fu_fu_matrix.py:23"
   wire width 30 input 0 \rd_pend_i
   attribute \src "scoremulti/fu_fu_matrix.py:24"
index 36379444f8e1ba91cdb0834971e0c4dfdd3b5e2e..190430eade2e2a3a5c207ce6dd74be4e7771f256 100644 (file)
@@ -3825,7 +3825,7 @@ end
 attribute \generator "nMigen"
 attribute \top 1
 attribute \nmigen.hierarchy "top"
-module \top
+module \test_fu_reg_matrix
   attribute \src "scoremulti/fu_reg_matrix.py:51"
   wire width 4 input 0 \dst1
   attribute \src "scoremulti/fu_reg_matrix.py:51"
index 2e99524ae1fff726b972cb1253be397f88227855..cc72de9000b620051a5535fa36bf1f324ee04b3b 100644 (file)
@@ -10333,8 +10333,8 @@ module \fumemdeps
 end
 attribute \generator "nMigen"
 attribute \top 1
-attribute \nmigen.hierarchy "top"
-module \top
+attribute \nmigen.hierarchy "test_mem_fus"
+module \test_mem_fus
   attribute \src "scoreboard/test_mem_fu_matrix.py:72"
   wire width 8 input 0 \ld_i
   attribute \src "scoreboard/test_mem_fu_matrix.py:73"