From f51de1b26a92eef612e88f3a832eae87f061c935 Mon Sep 17 00:00:00 2001 From: Krzysztof Boronski Date: Thu, 12 May 2022 07:04:35 -0500 Subject: [PATCH 1/2] Added acceptable cell placement list to CellInstance Signed-off-by: Krzysztof Boronski --- interchange/LogicalNetlist.capnp | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/interchange/LogicalNetlist.capnp b/interchange/LogicalNetlist.capnp index eba0feb..fcd77f2 100644 --- a/interchange/LogicalNetlist.capnp +++ b/interchange/LogicalNetlist.capnp @@ -58,6 +58,13 @@ struct InstRef { annotation instRef(*) :InstRef; using InstIdx = UInt32; +struct SiteTypeRef { + type @0 :Ref.ReferenceType = rootValue; + field @1 :Text = "siteTypeList"; +} +annotation siteTypeRef(*) :SiteTypeRef; +using SiteTypeIdx = UInt32; + struct Netlist { name @0 : Text; @@ -78,10 +85,17 @@ struct Netlist { } struct CellInstance { - name @0 : StringIdx $stringRef(); - propMap @1 : PropertyMap; - view @2 : StringIdx $stringRef(); - cell @3 : CellIdx $cellRef(); + name @0 : StringIdx $stringRef(); + propMap @1 : PropertyMap; + view @2 : StringIdx $stringRef(); + cell @3 : CellIdx $cellRef(); + placements @4 : List(CellInstancePlacement); + } + + # Acceptable physical placement for a cell instance + struct CellInstancePlacement { + siteType @0 : SiteTypeIdx $siteTypeRef; + bel @1 : StringIdx $stringRef; } struct Cell { From f084d00a4b97ac7d5d626e90adee63f9638374d3 Mon Sep 17 00:00:00 2001 From: Krzysztof Boronski Date: Tue, 14 Jun 2022 07:56:25 -0500 Subject: [PATCH 2/2] Revert LogicalNetlist bel placement changes additions Signed-off-by: Krzysztof Boronski --- interchange/DeviceResources.capnp | 17 +++++++++++++++++ interchange/LogicalNetlist.capnp | 22 ++++------------------ 2 files changed, 21 insertions(+), 18 deletions(-) diff --git a/interchange/DeviceResources.capnp b/interchange/DeviceResources.capnp index 111cf20..ccc7445 100644 --- a/interchange/DeviceResources.capnp +++ b/interchange/DeviceResources.capnp @@ -117,6 +117,7 @@ struct Device { wireTypes @16 : List(WireType); pipTimings @17 : List(PIPTiming); nodeTimings @18 : List(NodeTiming); + primLibsExtra @19 : PrimLibsExtra; ####################################### # Placement definition objects @@ -907,4 +908,20 @@ struct Device { struct ParameterDefinitions { cells @0 : List(CellParameterDefinition); } + + # Extra data for priomitive libraries that doesn't fit the LogicalNetlist format + + struct PrimLibsExtra { + perCellInstances @0 : List(PerCellInstance); + + struct PerCellInstance { + # List of possible cell placements + placements @0 : List(CellInstancePlacement); + } + + struct CellInstancePlacement { + siteType @0 : SiteTypeIdx $siteTypeRef(); + bel @1 : StringIdx $stringRef(); + } + } } diff --git a/interchange/LogicalNetlist.capnp b/interchange/LogicalNetlist.capnp index fcd77f2..eba0feb 100644 --- a/interchange/LogicalNetlist.capnp +++ b/interchange/LogicalNetlist.capnp @@ -58,13 +58,6 @@ struct InstRef { annotation instRef(*) :InstRef; using InstIdx = UInt32; -struct SiteTypeRef { - type @0 :Ref.ReferenceType = rootValue; - field @1 :Text = "siteTypeList"; -} -annotation siteTypeRef(*) :SiteTypeRef; -using SiteTypeIdx = UInt32; - struct Netlist { name @0 : Text; @@ -85,17 +78,10 @@ struct Netlist { } struct CellInstance { - name @0 : StringIdx $stringRef(); - propMap @1 : PropertyMap; - view @2 : StringIdx $stringRef(); - cell @3 : CellIdx $cellRef(); - placements @4 : List(CellInstancePlacement); - } - - # Acceptable physical placement for a cell instance - struct CellInstancePlacement { - siteType @0 : SiteTypeIdx $siteTypeRef; - bel @1 : StringIdx $stringRef; + name @0 : StringIdx $stringRef(); + propMap @1 : PropertyMap; + view @2 : StringIdx $stringRef(); + cell @3 : CellIdx $cellRef(); } struct Cell {