First working integration of a SRAM block.
authorJean-Paul Chaput <Jean-Paul.Chaput@lip6.fr>
Wed, 17 Feb 2021 23:10:43 +0000 (00:10 +0100)
committerJean-Paul Chaput <Jean-Paul.Chaput@lip6.fr>
Wed, 17 Feb 2021 23:10:43 +0000 (00:10 +0100)
The placement itself is completely goofy in order to stress the P&R system
to flush out bugs.

experiments12/coriolis2/katana.py
experiments12/doDesign.py

index b7dd7b3d86670a7adbb31889062200dd2b4dd9d4..19d5c4fc60004d9283b00e8b77d67fcbb0d3a1b7 100644 (file)
@@ -3,3 +3,11 @@ from Hurricane import DebugSession
 
 #DebugSession.addToTrace( katana.getCell().getNet( 'core.result(24)' ) )
 #DebugSession.addToTrace( katana.getCell().getNet( 'core.result(1)' ) )
+#DebugSession.addToTrace( katana.getCell().getNet( 'core.result(58)' ) )
+#DebugSession.addToTrace( katana.getCell().getNet( 'core.result(12)' ) )
+#DebugSession.addToTrace( katana.getCell().getNet( 'core.result(56)' ) )
+#DebugSession.addToTrace( katana.getCell().getNet( 'f_to_pad(3)' ) )
+#DebugSession.addToTrace( katana.getCell().getNet( 'we_from_pad(0)' ) )
+#DebugSession.addToTrace( katana.getCell().getNet( 'a_from_pad(2)' ) )
+#DebugSession.addToTrace( katana.getCell().getNet( 'core.result(0)' ) )
+#DebugSession.addToTrace( katana.getCell().getNet( 'a_from_pad(6)' ) )
index 5c525c463bb0bdf85ce9f7a4b1d84e14af0b0e22..7a2822e23f80c2b08b679c8e0fa8e245a9b6ed2d 100644 (file)
@@ -11,6 +11,7 @@ from   helpers.io      import ErrorMessage, WarningMessage
 from   helpers.overlay import UpdateSession
 import plugins
 from   Hurricane  import Breakpoint, DbU, Transformation, Box, Instance
+from   plugins.alpha.macro.macro          import Macro
 from   plugins.alpha.block.block          import Block
 from   plugins.alpha.block.configuration  import IoPin, GaugeConf
 from   plugins.alpha.core2chip.libresocio import CoreToChip
@@ -119,11 +120,13 @@ def scriptMain ( **kw ):
             if not sram:
                 print( '[ERROR] SRAM instance "{}" not found.'.format(sramName) )
             else:
+                Macro.wrap( sram.getMasterCell(), 'FlexLib', 3, 2 )
                 sramAb = sram.getMasterCell().getAbutmentBox()
-                sram.setTransformation( Transformation( coreAb.getXMax() - sramAb.getWidth()
-                                                      , u(0.0)
-                                                      , Transformation.Orientation.ID ) )
-                sram.setPlacementStatus( Instance.PlacementStatus.FIXED )
+                Macro.place( sram
+                           , Transformation( coreAb.getXMax() - sramAb.getWidth()
+                                           , u(0.0)
+                                           , Transformation.Orientation.ID )
+                           , Instance.PlacementStatus.FIXED )
                 sramAb = sram.getAbutmentBox()
                 memoryConf.placeArea = Box( coreAb.getXMin()
                                           , coreAb.getYMax() - sliceHeight*10
@@ -133,8 +136,8 @@ def scriptMain ( **kw ):
         Breakpoint.stop( 99, 'After core block placement.' )
         
         if buildChip:
-            arlet6502ToChip = CoreToChip( memoryConf )
-            arlet6502ToChip.buildChip()
+            memoryToChip = CoreToChip( memoryConf )
+            memoryToChip.buildChip()
             chipBuilder = Chip( memoryConf )
             rvalue = chipBuilder.doPnR()
             chipBuilder.save()