From 5263dd02b3528c713b6abc49b20fcfcaafa8c331 Mon Sep 17 00:00:00 2001 From: Jean-Paul Chaput Date: Sat, 6 Jun 2020 12:03:15 +0200 Subject: [PATCH] Test of the FU-FU matrix 30x30 with Coriolis matrixplacer. --- experiments8/Makefile | 32 ++++++++++++++++++++++++++ experiments8/RESULTS.txt | 21 +++++++++++++++++ experiments8/coriolis2/__init__.py | 0 experiments8/coriolis2/katana.py | 7 ++++++ experiments8/coriolis2/settings.py | 37 ++++++++++++++++++++++++++++++ experiments8/test_fu_fu_matrix.il | 4 ++-- experiments8/test_fu_reg_matrix.il | 2 +- experiments8/test_mem_fus.il | 4 ++-- 8 files changed, 102 insertions(+), 5 deletions(-) create mode 100755 experiments8/Makefile create mode 100644 experiments8/RESULTS.txt create mode 100644 experiments8/coriolis2/__init__.py create mode 100644 experiments8/coriolis2/katana.py create mode 100644 experiments8/coriolis2/settings.py diff --git a/experiments8/Makefile b/experiments8/Makefile new file mode 100755 index 0000000..e022332 --- /dev/null +++ b/experiments8/Makefile @@ -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 index 0000000..86dbc99 --- /dev/null +++ b/experiments8/RESULTS.txt @@ -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 index 0000000..e69de29 diff --git a/experiments8/coriolis2/katana.py b/experiments8/coriolis2/katana.py new file mode 100644 index 0000000..13768a0 --- /dev/null +++ b/experiments8/coriolis2/katana.py @@ -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 index 0000000..a225c6d --- /dev/null +++ b/experiments8/coriolis2/settings.py @@ -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') diff --git a/experiments8/test_fu_fu_matrix.il b/experiments8/test_fu_fu_matrix.il index 3a10e69..a5c3704 100644 --- a/experiments8/test_fu_fu_matrix.il +++ b/experiments8/test_fu_fu_matrix.il @@ -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" diff --git a/experiments8/test_fu_reg_matrix.il b/experiments8/test_fu_reg_matrix.il index 3637944..190430e 100644 --- a/experiments8/test_fu_reg_matrix.il +++ b/experiments8/test_fu_reg_matrix.il @@ -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" diff --git a/experiments8/test_mem_fus.il b/experiments8/test_mem_fus.il index 2e99524..cc72de9 100644 --- a/experiments8/test_mem_fus.il +++ b/experiments8/test_mem_fus.il @@ -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" -- 2.30.2