\addbibresource

biblio_small.bib

FloorSet - a VLSI Floorplanning Dataset with Design Constraints of Real-World SoCs

Uday Mallappa Intel LabsUSA ,Β  Hesham Mostafa Intel LabsUSA ,Β  Mikhail Galkin Intel LabsUSA ,Β  Mariano Phielipp Intel LabsUSA Β andΒ  Somdeb Majumdar Intel LabsUSA
Abstract.

Floorplanning for systems-on-a-chip (SoCs) and its sub-systems is a crucial and non-trivial step of the physical design flow. It represents a difficult combinatorial optimization problem. A typical large scale SoC with 120 partitions generates a search-space of ∼10250similar-toabsentsuperscript10250\sim 10^{250}∼ 10 start_POSTSUPERSCRIPT 250 end_POSTSUPERSCRIPT. As novel machine learning (ML) approaches emerge to tackle such problems, there is a growing need for a modern benchmark that comprises a large training dataset and performance metrics that better reflect real-world constraints and objectives compared to existing benchmarks. To address this need, we present π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSetβ€… - two comprehensive datasets of synthetic fixed-outline floorplan layouts that reflect the distribution of real SoCs. Each dataset has 1⁒M1𝑀1M1 italic_M training samples and 100100100100 test samples where each sample is a synthetic floorplan. π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSet-Prime comprises fully-abutted rectilinear partitions and near-optimal wire-length. A simplified dataset that reflects early design phases, π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSet-Lite comprises rectangular partitions, with <5%absentpercent5<5\%< 5 % white-space and near-optimal wire-length. Both datasets define hard constraints seen in modern design flows such as shape constraints, edge-affinity, grou** constraints, and pre-placement constraints. π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSetΒ is intended to spur fundamental research on large-scale constrained optimization problems. Crucially, π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSetΒ alleviates the core issue of reproducibility in modern ML driven solutions to such problems. π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSet  is available as an open-source repository for the research community111https://anonymous.4open.science/r/Constrained_Floorplans_Dataset-D490/.

1. Introduction

Circuit partitioning is the first step of the back-end physical design flow. It divides a flat, and large circuit netlist into more manageable partitions. This step defines area budgets specific to each partition, inter-partition connectivity constraints, connections to external terminals, and the respective positions of these external terminals. These outcomes define the requirements and constraints of the floorplanning step. Furthermore, the floorplanning task is governed by numerous placement constraints on a subset or all of the partitions. The goal of the floorplanning step is to determine optimal physical positions and shapes of the individual partitions comprising the SoC or a subsystem. The output from the floorplanning step serves as the starting point for the remainder of the physical design flow. Figure 1 shows the typical back-end design steps - our work directly addresses the first two steps of partition and sub-system placement.

Refer to caption
Figure 1. Our work focuses on establishing realistic benchmarks π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSet, for the first two steps (shaded) of the design planning phase of the back-end flow.

Floorplan Constraints: The key challenge of the floorplanning formulation lies in the requirement to satisfy hard design constraints. Some important constraints are:

  • β€’

    Outline-constraint: Modern ASIC design relies on hierarchical (top-down) floorplanning, with a ”fixed-outline” constraint for the SoC and its sub-systems. A floorplan optimized for area without accounting for this constraint may fail to fit within the specified outline.

  • β€’

    Shape-constraints: These specify the acceptable range of width-to-height ratios of each partition’s bounding box.

  • β€’

    Boundary-constraints: These specify that a partition must align with a specific edge or corner of the floorplanning outline. This alignment is driven by external interfacing requirements or system-level thermal considerations.

  • β€’

    Grou**-constraints: These specify a set of partitions that must be physically abutted - e.g., those operating on the same voltage or requiring simultaneous power-off.

  • β€’

    Multi-instantiation constraints: These define multiple partitions as instances of a shared main partition - e.g., eight instances of a CPU core partition. Thus, all such instances must share the same shape.

  • β€’

    Pre-placement constraints: These specify pre-defined locations of partitions that are often derived from past designs.

Supervised Learning and Data Paucity: Lately, there has been remarkable advancement in deep learning, that construct large parametric approximators by combining simpler functions. Deep learning demonstrates exceptional performance - particularly in scenarios involving high-dimensional spaces and abundant data points. Therefore, learning-based approaches can serve as promising alternatives for complex combinatorial optimization problems. However, the lack of sufficient training layouts is a major impediment in utilizing supervised learning methods for floorplanning. Due to this, prior learning-based techniques are often restricted to reinforcement learning (RL) (kdd22; learnfp20; gplanner22; gfp22) to yield optimal floorplan layouts. However, such approaches struggle to simultaneously optimize the objectives and respect the hard design constraints for large-scale combinatorial optimization problems. This data paucity stems primarily from intellectual-property (IP) restrictions of the chip-design industry. Our work addresses this gap by generating a large corpus of synthetic layouts that are reflect the optimal placement statistics and design constraints of real, commercial SoCs. This dataset, π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSet, can serve as a comprehensive training and test set for ML based floorplanning algorithms.

Overview: The rest of the paper is organized as follows. Section 2 surveys the state of benchmarks and synthetic data in EDA. Section 3 describes our data generation pipeline, and the two dataset variants π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSet-Prime and π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSet-Lite. Section 4 summarizes the attributes of π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSetβ€… and presents the complexity of the generated data. Finally, conclusions are discussed in Section 5.

2. Related Work

In recent years, an increasing number of works have applied ML to complex EDA problems (mleda23; mlcad22; dpan21). These works have targeted geometric problems (binpacking21), graph processing and optimization techniques(timinggnn22; dagsizer23), automated decision making (chipformer23; agnesia20; rlsizer21), vision-based approaches(pdn20; drc20) and natural language models (chipnemo24; chipchat23). Such ML-based solutions in the EDA flow mitigate the need for exhaustive design optimization iterations by judiciously pruning the solution space associated with sub-optimal design quality. The resulting advancements present significant strides in various design stages such as high-level logic design (hls20; hls22), circuit design (ls19; lo18), physical design (gfp22; gancts19; gr19; maskplace22), verification (verif23; fault21), and manufacturing aspects (asml) of conventional chip-design methodologies, offering notable opportunities for improvement.

EDA Benchmarks: There are several examples of open-source benchmarks for physical design tasks. E.g., IWLS 2005 benchmarks (iwls) provide a repository of 85858585 synthesized RTL netlists that were collected from various public resources (opencores). For discrete gate-sizing contest, ISPD 2012 (ispd12) benchmarks annotate interconnect parasitics and timing constraints for 14 IWLS netlists. ISPD 2015 benchmarks (ispd15) provide a 65⁒n⁒m65π‘›π‘š65nm65 italic_n italic_m dataset that comprises eight designs with routing constraints and design rules, for the purpose of blockage-aware detailed routing-driven placement task. For the multi-deck standard cell placement legalization problem, ICCAD 2017 (iccad17) provides eight benchmarks in LEF and DEF format, along with soft placement constraints. They are derived from ISPD 2015 dataset. For the detailed routing contest of ISPD, ISPD 2018 benchmarks (ispd18) provide 10101010 test designs in 32⁒n⁒m32π‘›π‘š32nm32 italic_n italic_m and 45⁒n⁒m45π‘›π‘š45nm45 italic_n italic_m nodes, extracted from two real designs. It also defines design rules such as spacing tables, end-of-line spacing rules, cut spacing rules, min-area rules, and routing preference rules. For the macro-placement task, the ISPD02 IBM-MS mixed-size placement dataset (ispd02) contains 18181818 designs with both hard macros and standard cells. The TILOS-AI-Institute added four more designs to reproduce the results of the RL-based MacroPlacement algorithm (ct2021). Though these efforts help in reproducibility, the scale of these benchmarks make it unusable to train modern ML models for physical design.

Floorplanning Benchmarks: For the floorplanning task, prior datasets GSRC (gsrc) (n10, n30, n50, n100, n200, and n300), and MCNC (mcnc) (ami33, ami49, apte, xp, and xerox) offer a standardized way to validate floorplan optimization algorithms. However, these benchmarks also suffer from being small scale, making them unusable for ML applications. In addition, the constraints used in these benchmarks do not capture many modern SoC floorplan constraints such as pre-placed constraints, boundary constraints, multi-instantiated partitions, and pin and net topologies.

Synthetic Data in EDA: IP issues often make it difficult for commercial design companies to distribute their historical EDA data. Synthetic data offers a practical solution to this data paucity problem. However, for it to be usable, it needs to reflect the structural characteristics of real designs. Gupta et al. (eyecharts) proposed benchmark circuits (called eyecharts) of arbitrary size, to diagnose the weaknesses of existing gate-sizing algorithms, and to enable a systematic and quantitative comparison of sizing algorithms. In later works, Han et al. (gt14) use artificial combinational paths to extract the sign-off timing values for ground truths. The artificial circuits in their work are created by swee** the number of stages, fan-outs and segments, and cell types in timing paths. Kahng et al. (cornerpred) also use artificial circuits to train a regression model, to predict timing values at unobserved corners. Recently, PROBE2.0 (probe2) proposed an artificial circuit with a mesh-like netlist topology as a place-and-route (P&R) benchmark, for routability assessment. However, these artificial circuit timing paths do not reflect the distribution present in real circuits and, thus, do not capture the full complexity of real circuits. Kim et al. (kim23) address the aforementioned issues and introduce an artificial netlist generator (ANG) framework for constructing authentic P&R benchmarks suitable for ML. This framework generates gate-level netlists based on user-defined input parameters representing the topological attributes of realistic circuit. Our work shares a close affinity with the ANG framework, although we address the floorplanning task. To the best of our knowledge, we are the first to propose a large-scale dataset to enable ML techniques for floorplanning..

3. Methodology

3.1. Problem Formulation

The π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSetβ€… benchmarks specifically target the first step of the floorplanning task within SoC and sub-system hierarchies, aiming to identify optimal shapes and positions for sub-systems and partitions while adhering to certain placement constraints. The inputs to perform floorplanning task at SoC and sub-system hierarchies constitute:

  • β€’

    area budgets of partitions or sub-systems.

  • β€’

    locations of external terminals of the system.

  • β€’

    netlist connectivity that define the connections between various components of the system.

  • β€’

    placement constraints that define pre-determined positions for some components of the system.

Refer to caption
Figure 2. The bookshelf *.blocks file is modified to include fixed-outline dimensions, area budgets, shape constraints (aspect ratio range) and placement constraints.

The bookshelf format (bookshelf) is a widely adopted, open-source, and standardized representation of VLSI design data. The components of a floorplanning problem are captured in the *.blocks, *.nets and *.pl file formats of the bookshelf format. As shown in Figure 2, we modify the *.blocks to include component-wise placement constraints, area budgets, and fixed-outline dimensions. We include net weights in the *.nets file, shown in Figure 3. The *.pl file is unchanged and contains the (x,y)π‘₯𝑦(x,y)( italic_x , italic_y ) locations of terminals.

Refer to caption
Figure 3. The bookshelf *.nets file is modified to add net weights.

3.2. Distribution of Real Layouts

In this section, we outline the topological statistics derived from real industrial floorplans extracted from heterogeneous SoCs and their sub-systems, with configurations upto 100 partitions. These real floorplan layouts capture modern human-designed heterogeneous SoC and sub-system implementations in the industry. Due to the necessity of preserving the IP rights of these SoCs and their implementations, we are unable to disclose the exact layouts and their associated statistics. However, we provide the details of statistics that represent these realistic floorplan layouts. We extract 10101010 parameters, listed in Table 1. These 10101010 distributions allow us to systematically explore the design space and produce synthetic layouts that closely mimic real-world layouts.

The rationale for extracting these statistics is listed below:

  • β€’

    Aπ‘π‘Žπ‘Ÿπ‘‘π‘ subscriptπ΄π‘π‘Žπ‘Ÿπ‘‘π‘ \mathit{A_{parts}}italic_A start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT: The aspect ratio range defines the acceptable width-to-height ratio of a component (partition or sub-system based on the hierarchy). For rectilinear partitions, we derive the aspect ratio from the bounding box of the rectilinear polygon. This parameter guarantees that the generated synthetic layouts exhibit realistic shapes.

  • β€’

    Rπ‘‘π‘’π‘Ÿπ‘šπ‘ π‘π‘Žπ‘Ÿπ‘‘π‘ superscriptsubscriptπ‘…π‘‘π‘’π‘Ÿπ‘šπ‘ π‘π‘Žπ‘Ÿπ‘‘π‘ \mathit{R_{terms}^{parts}}italic_R start_POSTSUBSCRIPT italic_terms end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_parts end_POSTSUPERSCRIPT: The ratio of terminal count to partition count captures the proportion of terminals relative to partitions within a hierarchy. This offers a method to represent the proportional distribution of partitions and terminals in the floorplan netlists, without biasing towards the absolute scale of terminal count.

  • β€’

    {Dπ‘π‘Žπ‘Ÿπ‘‘π‘ ,Dπ‘‘π‘’π‘Ÿπ‘šπ‘ ,Wπ‘π‘Žπ‘Ÿπ‘‘π‘ }subscriptπ·π‘π‘Žπ‘Ÿπ‘‘π‘ subscriptπ·π‘‘π‘’π‘Ÿπ‘šπ‘ subscriptπ‘Šπ‘π‘Žπ‘Ÿπ‘‘π‘ \big{\{}\mathit{D_{parts}},\mathit{D_{terms}},\mathit{W_{parts}}\big{\}}{ italic_D start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT , italic_D start_POSTSUBSCRIPT italic_terms end_POSTSUBSCRIPT , italic_W start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT }: To quantify the complexity of connectivity structure in layouts at SoC and sub-system hierarchies, we use density (complement of sparsity) parameters of the connectivity matrices (or adjacency matrices).

    Dπ‘π‘Žπ‘Ÿπ‘‘π‘ subscriptπ·π‘π‘Žπ‘Ÿπ‘‘π‘ \mathit{D_{parts}}italic_D start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT and Dπ‘‘π‘’π‘Ÿπ‘šπ‘ subscriptπ·π‘‘π‘’π‘Ÿπ‘šπ‘ \mathit{D_{terms}}italic_D start_POSTSUBSCRIPT italic_terms end_POSTSUBSCRIPT: These parameters capture the interconnection complexity of the floorplan netlists and provide a scale-independent mechanism to capture inter-partition and partition-terminal net connectivity. It is common to have multiple net connections (up to few thousands) between a partition pair, and weighted nets capture the strength of such connections. To account for weights on nets, we also extract the net-weight distribution,Wπ‘π‘Žπ‘Ÿπ‘‘π‘ subscriptπ‘Šπ‘π‘Žπ‘Ÿπ‘‘π‘ \mathit{W_{parts}}italic_W start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT, as a function of net-length. The net-lengths are normalized to the fixed-outline’s circumference, and net-weights are scaled to a range of 0-1.

  • β€’

    Eπ‘π‘Žπ‘Ÿπ‘‘π‘ subscriptπΈπ‘π‘Žπ‘Ÿπ‘‘π‘ \mathit{E_{parts}}italic_E start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT: This captures the relative distribution of components (or partitions) with edge-affinity (or boundary affinity). These components typically represent the input-output (IO) constrained partitions or sub-systems.

  • β€’

    {Nπ‘π‘™π‘’π‘ π‘‘π‘’π‘Ÿπ‘ ,Cπ‘π‘Žπ‘Ÿπ‘‘π‘ }::subscriptπ‘π‘π‘™π‘’π‘ π‘‘π‘’π‘Ÿπ‘ subscriptπΆπ‘π‘Žπ‘Ÿπ‘‘π‘ absent\big{\{}\mathit{N_{clusters}},\mathit{C_{parts}}\big{\}}:{ italic_N start_POSTSUBSCRIPT italic_clusters end_POSTSUBSCRIPT , italic_C start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT } : These capture the number of voltage islands and the number of components in these island regions.

  • β€’

    Pπ‘π‘Žπ‘Ÿπ‘‘π‘ subscriptπ‘ƒπ‘π‘Žπ‘Ÿπ‘‘π‘ \mathit{P_{parts}}italic_P start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT: The percentage of pre-placed partitions capture the relative distribution of partitions with pre-placement constraints. These are hard constraints on the positions of partitions that are either derived from prior design knowledge or known-optimal decisions.

  • β€’

    Mπ‘π‘Žπ‘Ÿπ‘‘π‘ subscriptπ‘€π‘π‘Žπ‘Ÿπ‘‘π‘ \mathit{M_{parts}}italic_M start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT: The percentage of multi-instantiation constraints represents the proportion of partitions enforcing shape-sharing constraints in modular design flows. E.g., in a hierarchy, if four instances of a CPU core exist, they all share the same shape and area.

Table 1. Design parameters whose values are sampled from statistical distributions derived from real SoCs.

Parameter Description Aπ‘π‘Žπ‘Ÿπ‘‘π‘ subscriptπ΄π‘π‘Žπ‘Ÿπ‘‘π‘ \mathit{A_{parts}}italic_A start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT Aspect ratio (=WHabsentπ‘Šπ»=\frac{W}{H}= divide start_ARG italic_W end_ARG start_ARG italic_H end_ARG) of a partition’s bounding box Nπ‘‘π‘’π‘Ÿπ‘šπ‘ π‘π‘Žπ‘Ÿπ‘‘π‘ superscriptsubscriptπ‘π‘‘π‘’π‘Ÿπ‘šπ‘ π‘π‘Žπ‘Ÿπ‘‘π‘ \mathit{N_{terms}^{parts}}italic_N start_POSTSUBSCRIPT italic_terms end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_parts end_POSTSUPERSCRIPT Number of terminals in a hierarchy relative to the partition count Dπ‘π‘Žπ‘Ÿπ‘‘π‘ subscriptπ·π‘π‘Žπ‘Ÿπ‘‘π‘ \mathit{D_{parts}}italic_D start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT Non-zero element percentage in the inter-partition connectivity matrix Wπ‘π‘Žπ‘Ÿπ‘‘π‘ subscriptπ‘Šπ‘π‘Žπ‘Ÿπ‘‘π‘ \mathit{W_{parts}}italic_W start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT Inter-partition weight distribution as a function of distance Dπ‘‘π‘’π‘Ÿπ‘šπ‘ subscriptπ·π‘‘π‘’π‘Ÿπ‘šπ‘ \mathit{D_{terms}}italic_D start_POSTSUBSCRIPT italic_terms end_POSTSUBSCRIPT Non-zero element percentage in the terminal partition connectivity matrix Eπ‘π‘Žπ‘Ÿπ‘‘π‘ subscriptπΈπ‘π‘Žπ‘Ÿπ‘‘π‘ \mathit{E_{parts}}italic_E start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT Percentage of partitions with edge and corner constraints Cπ‘π‘Žπ‘Ÿπ‘‘π‘ subscriptπΆπ‘π‘Žπ‘Ÿπ‘‘π‘ \mathit{C_{parts}}italic_C start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT Percentage of partitions with grou** (or clustering) constraints Nπ‘π‘™π‘’π‘ π‘‘π‘’π‘Ÿπ‘ subscriptπ‘π‘π‘™π‘’π‘ π‘‘π‘’π‘Ÿπ‘ \mathit{N_{clusters}}italic_N start_POSTSUBSCRIPT italic_clusters end_POSTSUBSCRIPT Number of clusters in a hierarchy Pπ‘π‘Žπ‘Ÿπ‘‘π‘ subscriptπ‘ƒπ‘π‘Žπ‘Ÿπ‘‘π‘ \mathit{P_{parts}}italic_P start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT Percentage of partitions with preplaced positions Mπ‘π‘Žπ‘Ÿπ‘‘π‘ subscriptπ‘€π‘π‘Žπ‘Ÿπ‘‘π‘ \mathit{M_{parts}}italic_M start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT Percentage of partitions with multi-instantiation constraint

3.3. π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSet-Prime: Rectilinear Partitions

Refer to caption
Figure 4. The distribution of parameters (Table 1) and the custom configuration file serve as inputs for the data generation pipeline. The output layouts are formatted in the standard bookshelf format and Pytorch tensor format.
Refer to caption
Figure 5. Overview of the five-step π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSetβ€… data generation framework, illustrating the sequential processes involved in the methodology: 1. Collection and extraction of target layout distributions, 2. Partitioning shapes with the target area budgets, 3. Annotation of terminal locations, 4. Annotation of connectivity matrix (weighted), and 5. Annotation of placement.

In this section, we present the mechanism to generate synthetic layouts, using the floorplan statistics extracted from real layouts. Figure 4 provides an overview of the π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSetgeneration framework at a high-level. The circuit statistics extracted are utilized as an input for our data generation framework. In addition, the second input to the π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSetdata generation pipeline is a custom input configuration file (shown in Figure 4), that contains the following settings:

  • β€’

    num_layouts: to specify the number of floorplan layouts to be generated.

  • β€’

    foutline_shape: to sweep the desired shape of the fixed-outline.

  • β€’

    num_partitions: to sweep the target partition count.

  • β€’

    rectilinear_flag: to enable or disable rectilinear partitions in the layout.

  • β€’

    placement_constraints_flag: to enable or disable annotation of hard placement constraints.

  • β€’

    dataset_mode flag: to select between the available dataset pipelines (π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSet-Prime and π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSet-Lite).

The output of this data generation framework comprises layouts in Bookshelf and Pytorch tensor formats, representing diverse instances of floorplan problems. Expanding on the previous Figure 4, Figure 5 explains the π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSetβ€… data generation framework using the following five important steps that are described below: Parameter Extraction, Partition Sampling, Terminal Sampling, Connectivity Sampling and Constraints Sampling.

The pseudocode of π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSetβ€… data generation pipeline is presented in Algorithm 1. To recap, the inputs to the framework are target distributions extracted from real floorplan circuits, and input configuration file to sample the design parameters. The output of the Algorithm 1 is a repository of synthetic floorplan layouts in the Bookshelf format and a tensor-based representation that is compatible with data loader libraries commonly used in ML applications.

1. Parameter Extraction: From a repository of several industrial floorplan layouts sourced from diverse SoC and subsystem implementations, we extract statistical metrics (listed in Table 1) representative of the circuit characteristics inherent to modern SoC and sub-system layouts. These metrics establish the target distribution from which we sample to produce synthetic floorplan layouts. To capture connectivity characteristics, we extract the density (complement of sparsity) distribution of inter-partition (Dπ‘π‘Žπ‘Ÿπ‘‘π‘ subscriptπ·π‘π‘Žπ‘Ÿπ‘‘π‘ \mathit{D_{parts}}italic_D start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT) and partition-terminal (Dπ‘‘π‘’π‘Ÿπ‘šπ‘ subscriptπ·π‘‘π‘’π‘Ÿπ‘šπ‘ \mathit{D_{terms}}italic_D start_POSTSUBSCRIPT italic_terms end_POSTSUBSCRIPT) adjacency matrices. In addition, we extract the relative proportion of terminal-count (Nπ‘‘π‘’π‘Ÿπ‘šπ‘ π‘π‘Žπ‘Ÿπ‘‘π‘ superscriptsubscriptπ‘π‘‘π‘’π‘Ÿπ‘šπ‘ π‘π‘Žπ‘Ÿπ‘‘π‘ \mathit{N_{terms}^{parts}}italic_N start_POSTSUBSCRIPT italic_terms end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_parts end_POSTSUPERSCRIPT) to represent the scale of terminal count as a function of partition count in a hierarchy, and the the distribution of net-weights as a function of net-lengths (Wπ‘π‘Žπ‘Ÿπ‘‘π‘ subscriptπ‘Šπ‘π‘Žπ‘Ÿπ‘‘π‘ \mathit{W_{parts}}italic_W start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT). Moreover, statistics regarding partition-specific aspect ratios (Aπ‘π‘Žπ‘Ÿπ‘‘π‘ subscriptπ΄π‘π‘Žπ‘Ÿπ‘‘π‘ \mathit{A_{parts}}italic_A start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT) and placement constraints (Eπ‘π‘Žπ‘Ÿπ‘‘π‘ subscriptπΈπ‘π‘Žπ‘Ÿπ‘‘π‘ \mathit{E_{parts}}italic_E start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT, Cπ‘π‘Žπ‘Ÿπ‘‘π‘ subscriptπΆπ‘π‘Žπ‘Ÿπ‘‘π‘ \mathit{C_{parts}}italic_C start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT, Nπ‘π‘™π‘’π‘ π‘‘π‘’π‘Ÿπ‘ subscriptπ‘π‘π‘™π‘’π‘ π‘‘π‘’π‘Ÿπ‘ \mathit{N_{clusters}}italic_N start_POSTSUBSCRIPT italic_clusters end_POSTSUBSCRIPT, Pπ‘π‘Žπ‘Ÿπ‘‘π‘ subscriptπ‘ƒπ‘π‘Žπ‘Ÿπ‘‘π‘ \mathit{P_{parts}}italic_P start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT, Mπ‘π‘Žπ‘Ÿπ‘‘π‘ subscriptπ‘€π‘π‘Žπ‘Ÿπ‘‘π‘ \mathit{M_{parts}}italic_M start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT) are also extracted from real layouts. The extracted statistics serve as the input to Algorithm 1. Lines 1-2 initialize the ”Layouts” database and index variables. Line 3 is a loop for generating n⁒_⁒l⁒a⁒y⁒o⁒u⁒t⁒s𝑛_π‘™π‘Žπ‘¦π‘œπ‘’π‘‘π‘ n\_layoutsitalic_n _ italic_l italic_a italic_y italic_o italic_u italic_t italic_s. We use tensor F representation internally, to store the layout information (line 4).

2. Partition Sampling: Following step 1, the next step (line 5) involves swee** (or extracting) the desired fixed-outline dimensions from the input configuration file. Using this sampled outline, the synthetic layout undergoes decomposition into individual partitions or subsystems. To introduce variability, a mesh-layout (line 7 of Algorithm 1) is created by employing a sequence of randomly sampled vertical and horizontal lines (line 6 of Algorithm 1). These randomly positioned vertical and horizontal lines segment the fixed-outline layout into rectangles, forming the initial partition grid. Subsequently, adjacent polygons are merged, to create partition shapes that match the desired target distribution of partition shapes. To ensure sufficient room for the creation of desired shapes and area budgets, we start with a large partition count (4Γ—βˆ’6Γ—4\times-6\times4 Γ— - 6 Γ— of the desired partition count) on the initial grid (line 6 of of Algorithm 1). The randomized selection of merging candidates and randomized initial grid creation offer a systematic approach to sampling numerous potential fully-abutted divisions of the fixed-outline layout, exposing complex but realistic use-cases. The details of the merging process is elaborated in Algorithm 2. As shown in line 2 and line 9 of Algorithm 2, polygons on the layout are iteratively merged until the desired shapes and partition count are achieved. If rectilinear_flag = 0 (line 4), the merging operation ensures that generated partitions are always rectangles. Conversely, when the flag is set to 1, there are no restrictions on the rectilinearity of the shapes. Each merging operation is committed if the merged partition operation improves the alignment between the current shape distribution and the target shape distribution (lines 7 and 8).

Refer to caption
Figure 6. A sequence of merging operations, to generate the channel-less layout with desired shapes and area budgets.

3. Terminal Sampling: After the creation of the fully-abutted layout, we annotate the terminal positions on the outline (line 9 of Algorithm 1). Illustrated in Figure 7 and Algorithm 3, this terminal annotation process involves first placing a terminal at a random location along the outline (line 3 of Algorithm 3). Subsequently, other terminals are incrementally placed (line 6 of Algorithm 3), while adhering to the normalized-pitch considerations (line 8 of Algorithm 3) and meeting the total terminal-count quota.

Refer to caption
Figure 7. A sequence of terminal-annotation operations, to place terminals on the layout from Step 1.

4. Connectivity Sampling: Following the placement of desired partition shapes (or sub-systems), and terminal locations, we create the connectivity between partitions and terminals (line 10 of Algorithm 4). The details of connectivity annotation are explained in Algorithm 4. While decomposing the fixed outline into individual partitions implicitly ensures area-optimal layouts, a optimal-by-construct annotation of connectivity is necessary to generate an optimal or near-optimal connectivity matrix. To achieve this, we utilize the pair-wise distance matrix among all partition pairs, as well as partition and terminal combinations (lines 4-5 of Algorithm 4). The inverse of the distance matrix yields the ”similarity matrix,” which denotes the proximity of modules in 2222D Manhattan space (lines 6-7 of Algorithm 4). Since the optimal layouts tend to place heavily connected partitions closer, annotating connections using the similarity matrix as the probabilities (line 8-9 of Algorithm 4) offers a rational approach to ensuring the near-optimality of generated connections. In addition, we also sample inter-partition net-weights from the target distribution that captures net-weights as a function of inter-partition distance. using the similarity matrix. Figure 8 visually explain the annotation of weighted inter-partition nets and partition-terminal nets, that meet the target sparsity for inter-partition and partition-net connections.

Refer to caption
Figure 8. Using the layouts with partition and terminals placed, connections are added using probabilities proportional to the closeness (Manhattan distance) of components.

5. Constraint Sampling: The output from Step 4 embodies the circuit characteristics of real layouts in terms of near-optimal connectivity and optimal area. Line 11 of Algorithm 1 is the constraint annotation step, where the desired placement constraints are annotated on the area and wire-length optimal layouts. The resulting layout manifests as a hard-constrained floorplanning instance with optimal area and nearly optimal wire-length characteristics. Further details on constraint annotation are provided in Algorithm 5. Utilizing the connectivity information and the optimal positions of individual partitions, boundary constraints such as corner partitions and edge partitions are annotated (line 7 of Algorithm 5). In real circuits, it is commonly observed that the majority of pre-placed partitions reside towards the periphery, and therefore we annotate pre-placed constraint, with a higher affinity for partitions that are placed on the periphery of the layout (line 8 of Algorithm 5). Line 9 of Algorithm 5 annotates the clustering constraint on a subset of partitions that are strongly connected (physical-adjacency requirement). Finally, multi-instantiated constraints are enforced on a subset of partitions that share identical shape and area values (line 10 of Algorithm 5). Figure 9 illustrates the process of constraint annotation.

Refer to caption
Figure 9. Using the layouts with optimal shapes and locations, placement constraints are annotated. We also use connectivity from Step 4, to determine edge affinity.
Algorithm 1 π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSet-Prime: Generating optimal layouts with constraint annotation
0:Β Β Input Configuration: Ic⁒o⁒n⁒f⁒i⁒gsubscriptπΌπ‘π‘œπ‘›π‘“π‘–π‘”I_{config}italic_I start_POSTSUBSCRIPT italic_c italic_o italic_n italic_f italic_i italic_g end_POSTSUBSCRIPT = num_layouts, foutline_shape, num_partitions, rectilinear_flag, placement_constraints, dataset_mode = Prime Target distribution: (Aπ‘π‘Žπ‘Ÿπ‘‘π‘ ,Nπ‘‘π‘’π‘Ÿπ‘šπ‘ π‘π‘Žπ‘Ÿπ‘‘π‘ ,Dπ‘π‘Žπ‘Ÿπ‘‘π‘ ,Wπ‘π‘Žπ‘Ÿπ‘‘π‘ ,Dπ‘‘π‘’π‘Ÿπ‘šπ‘ ,(\mathit{A_{parts}},\mathit{N_{terms}^{parts}},\mathit{D_{parts}},\mathit{W_{% parts}},\mathit{D_{terms}},( italic_A start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT , italic_N start_POSTSUBSCRIPT italic_terms end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_parts end_POSTSUPERSCRIPT , italic_D start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT , italic_W start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT , italic_D start_POSTSUBSCRIPT italic_terms end_POSTSUBSCRIPT , Eπ‘π‘Žπ‘Ÿπ‘‘π‘ ,Cπ‘π‘Žπ‘Ÿπ‘‘π‘ ,Nπ‘π‘™π‘’π‘ π‘‘π‘’π‘Ÿπ‘ ,Pπ‘π‘Žπ‘Ÿπ‘‘π‘ ,Mπ‘π‘Žπ‘Ÿπ‘‘π‘ )\mathit{E_{parts}},\mathit{C_{parts}},\mathit{N_{clusters}},\mathit{P_{parts}}% ,\mathit{M_{parts}})italic_E start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT , italic_C start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT , italic_N start_POSTSUBSCRIPT italic_clusters end_POSTSUBSCRIPT , italic_P start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT , italic_M start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT )
1:Β Β L⁒a⁒y⁒o⁒u⁒t⁒s=βˆ…πΏπ‘Žπ‘¦π‘œπ‘’π‘‘π‘ Layouts=\emptysetitalic_L italic_a italic_y italic_o italic_u italic_t italic_s = βˆ…
2:Β Β i⁒n⁒d⁒e⁒x=0𝑖𝑛𝑑𝑒π‘₯0index=0italic_i italic_n italic_d italic_e italic_x = 0
3:Β Β whileΒ i⁒n⁒d⁒e⁒x<n⁒u⁒m⁒_⁒l⁒a⁒y⁒o⁒u⁒t⁒s𝑖𝑛𝑑𝑒π‘₯π‘›π‘’π‘š_π‘™π‘Žπ‘¦π‘œπ‘’π‘‘π‘ index<num\_layoutsitalic_i italic_n italic_d italic_e italic_x < italic_n italic_u italic_m _ italic_l italic_a italic_y italic_o italic_u italic_t italic_s Β do
4:Β Β Β Β Β F=βˆ…F\textbf{F}=\emptysetF = βˆ… Internal geometric representation of the layout
5:Β Β Β Β Β W,H,n⁒_⁒p⁒a⁒r⁒t⁒s←s⁒a⁒m⁒p⁒l⁒e⁒(f⁒o⁒u⁒t⁒l⁒i⁒n⁒e⁒_⁒s⁒h⁒a⁒p⁒e,n⁒u⁒m⁒_⁒p⁒a⁒r⁒t⁒i⁒t⁒i⁒o⁒n⁒s)β†π‘Šπ»π‘›_π‘π‘Žπ‘Ÿπ‘‘π‘ π‘ π‘Žπ‘šπ‘π‘™π‘’π‘“π‘œπ‘’π‘‘π‘™π‘–π‘›π‘’_π‘ β„Žπ‘Žπ‘π‘’π‘›π‘’π‘š_π‘π‘Žπ‘Ÿπ‘‘π‘–π‘‘π‘–π‘œπ‘›π‘ W,H,n\_parts\leftarrow sample(foutline\_shape,num\_partitions)italic_W , italic_H , italic_n _ italic_p italic_a italic_r italic_t italic_s ← italic_s italic_a italic_m italic_p italic_l italic_e ( italic_f italic_o italic_u italic_t italic_l italic_i italic_n italic_e _ italic_s italic_h italic_a italic_p italic_e , italic_n italic_u italic_m _ italic_p italic_a italic_r italic_t italic_i italic_t italic_i italic_o italic_n italic_s ) Fixed-outline dimensions & number of partitions
6:Β Β Β Β Β n⁒_⁒g⁒r⁒i⁒d⁒s←r⁒a⁒n⁒d⁒o⁒m⁒(4,6)βˆ—n⁒_⁒p⁒a⁒r⁒t⁒s←𝑛_π‘”π‘Ÿπ‘–π‘‘π‘ π‘Ÿπ‘Žπ‘›π‘‘π‘œπ‘š46𝑛_π‘π‘Žπ‘Ÿπ‘‘π‘ n\_grids\leftarrow random(4,6)*n\_partsitalic_n _ italic_g italic_r italic_i italic_d italic_s ← italic_r italic_a italic_n italic_d italic_o italic_m ( 4 , 6 ) βˆ— italic_n _ italic_p italic_a italic_r italic_t italic_s Initial partition count
7:Β Β Β Β Β F←c⁒r⁒e⁒a⁒t⁒e⁒M⁒E⁒S⁒H⁒(n⁒_⁒g⁒r⁒i⁒d⁒s,W,H)←Fπ‘π‘Ÿπ‘’π‘Žπ‘‘π‘’π‘€πΈπ‘†π»π‘›_π‘”π‘Ÿπ‘–π‘‘π‘ π‘Šπ»\textbf{F}\leftarrow createMESH(n\_grids,W,H)F ← italic_c italic_r italic_e italic_a italic_t italic_e italic_M italic_E italic_S italic_H ( italic_n _ italic_g italic_r italic_i italic_d italic_s , italic_W , italic_H ) Random partitioning of the layout in to n_grids
8:Β Β Β Β Β F←m⁒e⁒r⁒g⁒e⁒P⁒A⁒R⁒T⁒I⁒T⁒I⁒O⁒N⁒(n⁒_⁒p⁒a⁒r⁒t⁒s,Aπ‘π‘Žπ‘Ÿπ‘‘π‘ ,r⁒e⁒c⁒t⁒i⁒l⁒i⁒n⁒e⁒a⁒r⁒_⁒f⁒l⁒a⁒g,F)←Fπ‘šπ‘’π‘Ÿπ‘”π‘’π‘ƒπ΄π‘…π‘‡πΌπ‘‡πΌπ‘‚π‘π‘›_π‘π‘Žπ‘Ÿπ‘‘π‘ subscriptπ΄π‘π‘Žπ‘Ÿπ‘‘π‘ π‘Ÿπ‘’π‘π‘‘π‘–π‘™π‘–π‘›π‘’π‘Žπ‘Ÿ_π‘“π‘™π‘Žπ‘”F\textbf{F}\leftarrow mergePARTITION(n\_parts,\mathit{A_{parts}},rectilinear\_% flag,\textbf{F})F ← italic_m italic_e italic_r italic_g italic_e italic_P italic_A italic_R italic_T italic_I italic_T italic_I italic_O italic_N ( italic_n _ italic_p italic_a italic_r italic_t italic_s , italic_A start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT , italic_r italic_e italic_c italic_t italic_i italic_l italic_i italic_n italic_e italic_a italic_r _ italic_f italic_l italic_a italic_g , F ) Merging of partitions to get target shapes
9:Β Β Β Β Β F←a⁒n⁒n⁒o⁒t⁒a⁒t⁒e⁒T⁒E⁒R⁒M⁒I⁒N⁒A⁒L⁒S⁒(Nπ‘‘π‘’π‘Ÿπ‘šπ‘ π‘π‘Žπ‘Ÿπ‘‘π‘ ,n⁒_⁒p⁒a⁒r⁒t⁒s,t⁒e⁒r⁒m⁒_⁒p⁒i⁒t⁒c⁒h⁒F)←Fπ‘Žπ‘›π‘›π‘œπ‘‘π‘Žπ‘‘π‘’π‘‡πΈπ‘…π‘€πΌπ‘π΄πΏπ‘†superscriptsubscriptπ‘π‘‘π‘’π‘Ÿπ‘šπ‘ π‘π‘Žπ‘Ÿπ‘‘π‘ π‘›_π‘π‘Žπ‘Ÿπ‘‘π‘ π‘‘π‘’π‘Ÿπ‘š_π‘π‘–π‘‘π‘β„ŽF\textbf{F}\leftarrow annotateTERMINALS(\mathit{N_{terms}^{parts}},n\_parts,% term\_pitch\textbf{F})F ← italic_a italic_n italic_n italic_o italic_t italic_a italic_t italic_e italic_T italic_E italic_R italic_M italic_I italic_N italic_A italic_L italic_S ( italic_N start_POSTSUBSCRIPT italic_terms end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_parts end_POSTSUPERSCRIPT , italic_n _ italic_p italic_a italic_r italic_t italic_s , italic_t italic_e italic_r italic_m _ italic_p italic_i italic_t italic_c italic_h F ) Annotate terminals on the outline of the layout
10:Β Β Β Β Β F←a⁒n⁒n⁒o⁒t⁒a⁒t⁒e⁒N⁒E⁒T⁒S⁒(Dπ‘π‘Žπ‘Ÿπ‘‘π‘ ,Dπ‘‘π‘’π‘Ÿπ‘šπ‘ ,Wπ‘π‘Žπ‘Ÿπ‘‘π‘ ,n⁒_⁒p⁒a⁒r⁒t⁒s,F)←Fπ‘Žπ‘›π‘›π‘œπ‘‘π‘Žπ‘‘π‘’π‘πΈπ‘‡π‘†subscriptπ·π‘π‘Žπ‘Ÿπ‘‘π‘ subscriptπ·π‘‘π‘’π‘Ÿπ‘šπ‘ subscriptπ‘Šπ‘π‘Žπ‘Ÿπ‘‘π‘ π‘›_π‘π‘Žπ‘Ÿπ‘‘π‘ F\textbf{F}\leftarrow annotateNETS(\mathit{D_{parts}},\mathit{D_{terms}},% \mathit{W_{parts}},n\_parts,\textbf{F})F ← italic_a italic_n italic_n italic_o italic_t italic_a italic_t italic_e italic_N italic_E italic_T italic_S ( italic_D start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT , italic_D start_POSTSUBSCRIPT italic_terms end_POSTSUBSCRIPT , italic_W start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT , italic_n _ italic_p italic_a italic_r italic_t italic_s , F ) Create connections among partitions and terminals
11:Β Β Β Β Β ifΒ placement_constraints == 1Β then
12:Β Β Β Β Β Β Β Β F←annotateCONSTRAINTS(Eπ‘π‘Žπ‘Ÿπ‘‘π‘ ,Cπ‘π‘Žπ‘Ÿπ‘‘π‘ ,Nπ‘π‘™π‘’π‘ π‘‘π‘’π‘Ÿπ‘ ,Pπ‘π‘Žπ‘Ÿπ‘‘π‘ ,\textbf{F}\leftarrow annotateCONSTRAINTS(\mathit{E_{parts}},\mathit{C_{parts}}% ,\mathit{N_{clusters}},\mathit{P_{parts}},F ← italic_a italic_n italic_n italic_o italic_t italic_a italic_t italic_e italic_C italic_O italic_N italic_S italic_T italic_R italic_A italic_I italic_N italic_T italic_S ( italic_E start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT , italic_C start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT , italic_N start_POSTSUBSCRIPT italic_clusters end_POSTSUBSCRIPT , italic_P start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT , Mπ‘π‘Žπ‘Ÿπ‘‘π‘ ,F)\mathit{M_{parts}},\textbf{F})italic_M start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT , F ) Annotate placement constraints on the partitions
13:Β Β Β Β Β i⁒n⁒d⁒e⁒x+=1limit-from𝑖𝑛𝑑𝑒π‘₯1index+=1italic_i italic_n italic_d italic_e italic_x + = 1
14:Β Β Β Β Β b⁒l⁒o⁒c⁒k⁒s,n⁒e⁒t⁒s,p⁒l←c⁒o⁒n⁒v⁒e⁒r⁒t⁒B⁒O⁒O⁒K⁒S⁒H⁒E⁒L⁒F⁒(F)β†π‘π‘™π‘œπ‘π‘˜π‘ π‘›π‘’π‘‘π‘ π‘π‘™π‘π‘œπ‘›π‘£π‘’π‘Ÿπ‘‘π΅π‘‚π‘‚πΎπ‘†π»πΈπΏπΉFblocks,nets,pl\leftarrow convertBOOKSHELF(\textbf{F})italic_b italic_l italic_o italic_c italic_k italic_s , italic_n italic_e italic_t italic_s , italic_p italic_l ← italic_c italic_o italic_n italic_v italic_e italic_r italic_t italic_B italic_O italic_O italic_K italic_S italic_H italic_E italic_L italic_F ( F )
15:Β Β Β Β Β L⁒a⁒y⁒o⁒u⁒t⁒s⁒[i⁒n⁒d⁒e⁒x]=[b⁒l⁒o⁒c⁒k⁒s,n⁒e⁒t⁒s,p⁒l,F]πΏπ‘Žπ‘¦π‘œπ‘’π‘‘π‘ delimited-[]𝑖𝑛𝑑𝑒π‘₯π‘π‘™π‘œπ‘π‘˜π‘ π‘›π‘’π‘‘π‘ π‘π‘™FLayouts[index]=[blocks,nets,pl,\textbf{F}]italic_L italic_a italic_y italic_o italic_u italic_t italic_s [ italic_i italic_n italic_d italic_e italic_x ] = [ italic_b italic_l italic_o italic_c italic_k italic_s , italic_n italic_e italic_t italic_s , italic_p italic_l , F ]
Algorithm 2 Merging of partitions: mergePARTITION
0:Β Β n⁒_⁒p⁒a⁒r⁒t⁒s,Aπ‘π‘Žπ‘Ÿπ‘‘π‘ ,r⁒e⁒c⁒t⁒i⁒l⁒i⁒n⁒e⁒a⁒r⁒_⁒f⁒l⁒a⁒g,F𝑛_π‘π‘Žπ‘Ÿπ‘‘π‘ subscriptπ΄π‘π‘Žπ‘Ÿπ‘‘π‘ π‘Ÿπ‘’π‘π‘‘π‘–π‘™π‘–π‘›π‘’π‘Žπ‘Ÿ_π‘“π‘™π‘Žπ‘”Fn\_parts,\mathit{A_{parts}},rectilinear\_flag,\textbf{F}italic_n _ italic_p italic_a italic_r italic_t italic_s , italic_A start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT , italic_r italic_e italic_c italic_t italic_i italic_l italic_i italic_n italic_e italic_a italic_r _ italic_f italic_l italic_a italic_g , F
1:Β Β p⁒a⁒r⁒t⁒_⁒c⁒o⁒u⁒n⁒t=c⁒o⁒u⁒n⁒t⁒P⁒o⁒l⁒y⁒g⁒o⁒n⁒s⁒(F)π‘π‘Žπ‘Ÿπ‘‘_π‘π‘œπ‘’π‘›π‘‘π‘π‘œπ‘’π‘›π‘‘π‘ƒπ‘œπ‘™π‘¦π‘”π‘œπ‘›π‘ Fpart\_count=countPolygons(\textbf{F})italic_p italic_a italic_r italic_t _ italic_c italic_o italic_u italic_n italic_t = italic_c italic_o italic_u italic_n italic_t italic_P italic_o italic_l italic_y italic_g italic_o italic_n italic_s ( F )
2:Β Β whileΒ p⁒a⁒r⁒t⁒_⁒c⁒o⁒u⁒n⁒t>n⁒_⁒p⁒a⁒r⁒t⁒sπ‘π‘Žπ‘Ÿπ‘‘_π‘π‘œπ‘’π‘›π‘‘π‘›_π‘π‘Žπ‘Ÿπ‘‘π‘ part\_count>n\_partsitalic_p italic_a italic_r italic_t _ italic_c italic_o italic_u italic_n italic_t > italic_n _ italic_p italic_a italic_r italic_t italic_sΒ do
3:Β Β Β Β Β F_new←r⁒e⁒m⁒o⁒v⁒e⁒R⁒a⁒n⁒d⁒o⁒m⁒E⁒d⁒g⁒e⁒(F)←F_newπ‘Ÿπ‘’π‘šπ‘œπ‘£π‘’π‘…π‘Žπ‘›π‘‘π‘œπ‘šπΈπ‘‘π‘”π‘’F\textbf{F\_new}\leftarrow removeRandomEdge(\textbf{F})F_new ← italic_r italic_e italic_m italic_o italic_v italic_e italic_R italic_a italic_n italic_d italic_o italic_m italic_E italic_d italic_g italic_e ( F )
4:Β Β Β Β Β ifΒ rectilinear_flag==0rectilinear\_flag==0italic_r italic_e italic_c italic_t italic_i italic_l italic_i italic_n italic_e italic_a italic_r _ italic_f italic_l italic_a italic_g = = 0Β then
5:Β Β Β Β Β Β Β Β ifΒ checkRectilinear(F_new)Β then
6:Β Β Β Β Β Β Β Β Β Β Β continue
7:Β Β Β Β Β ifΒ wassertsteinDist(F_new, T) Β‘ wassertsteinDist(F, T)Β then
8:Β Β Β Β Β Β Β Β F←F_new←FF_new\textbf{F}\leftarrow\textbf{F\_new}F ← F_new
9:Β Β Β Β Β Β Β Β p⁒a⁒r⁒t⁒_⁒c⁒o⁒u⁒n⁒t=c⁒o⁒u⁒n⁒t⁒P⁒o⁒l⁒y⁒g⁒o⁒n⁒s⁒(F)π‘π‘Žπ‘Ÿπ‘‘_π‘π‘œπ‘’π‘›π‘‘π‘π‘œπ‘’π‘›π‘‘π‘ƒπ‘œπ‘™π‘¦π‘”π‘œπ‘›π‘ Fpart\_count=countPolygons(\textbf{F})italic_p italic_a italic_r italic_t _ italic_c italic_o italic_u italic_n italic_t = italic_c italic_o italic_u italic_n italic_t italic_P italic_o italic_l italic_y italic_g italic_o italic_n italic_s ( F )
10:Β Β return F
Algorithm 3 Annotation of terminals: annotateTERMINALS
0:Β Β Nπ‘‘π‘’π‘Ÿπ‘šπ‘ π‘π‘Žπ‘Ÿπ‘‘π‘ ,n⁒_⁒p⁒a⁒r⁒t⁒s,Fsuperscriptsubscriptπ‘π‘‘π‘’π‘Ÿπ‘šπ‘ π‘π‘Žπ‘Ÿπ‘‘π‘ π‘›_π‘π‘Žπ‘Ÿπ‘‘π‘ F\mathit{N_{terms}^{parts}},n\_parts,\textbf{F}italic_N start_POSTSUBSCRIPT italic_terms end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_parts end_POSTSUPERSCRIPT , italic_n _ italic_p italic_a italic_r italic_t italic_s , F
1:Β Β n⁒_⁒t⁒e⁒r⁒m⁒s=i⁒n⁒t⁒(n⁒_⁒p⁒a⁒r⁒t⁒sβˆ—Nπ‘‘π‘’π‘Ÿπ‘šπ‘ π‘π‘Žπ‘Ÿπ‘‘π‘ )𝑛_π‘‘π‘’π‘Ÿπ‘šπ‘ π‘–π‘›π‘‘π‘›_π‘π‘Žπ‘Ÿπ‘‘π‘ superscriptsubscriptπ‘π‘‘π‘’π‘Ÿπ‘šπ‘ π‘π‘Žπ‘Ÿπ‘‘π‘ n\_terms=int(n\_parts*\mathit{N_{terms}^{parts}})italic_n _ italic_t italic_e italic_r italic_m italic_s = italic_i italic_n italic_t ( italic_n _ italic_p italic_a italic_r italic_t italic_s βˆ— italic_N start_POSTSUBSCRIPT italic_terms end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_parts end_POSTSUPERSCRIPT )
2:Β Β t⁒e⁒r⁒m⁒_⁒c⁒o⁒u⁒n⁒t=0π‘‘π‘’π‘Ÿπ‘š_π‘π‘œπ‘’π‘›π‘‘0term\_count=0italic_t italic_e italic_r italic_m _ italic_c italic_o italic_u italic_n italic_t = 0
3:Β Β W,H←e⁒x⁒t⁒r⁒a⁒c⁒t⁒O⁒u⁒t⁒l⁒i⁒n⁒e⁒(F)β†π‘Šπ»π‘’π‘₯π‘‘π‘Ÿπ‘Žπ‘π‘‘π‘‚π‘’π‘‘π‘™π‘–π‘›π‘’FW,H\leftarrow extractOutline(\textbf{F})italic_W , italic_H ← italic_e italic_x italic_t italic_r italic_a italic_c italic_t italic_O italic_u italic_t italic_l italic_i italic_n italic_e ( F )
4:Β Β t⁒e⁒r⁒m⁒_⁒p⁒i⁒t⁒c⁒h=2βˆ—(W+H)/n⁒_⁒t⁒e⁒r⁒m⁒sπ‘‘π‘’π‘Ÿπ‘š_π‘π‘–π‘‘π‘β„Ž2π‘Šπ»π‘›_π‘‘π‘’π‘Ÿπ‘šπ‘ term\_pitch=2*(W+H)/n\_termsitalic_t italic_e italic_r italic_m _ italic_p italic_i italic_t italic_c italic_h = 2 βˆ— ( italic_W + italic_H ) / italic_n _ italic_t italic_e italic_r italic_m italic_s
5:Β Β t⁒x,t⁒y←r⁒a⁒n⁒d⁒o⁒m⁒P⁒o⁒i⁒n⁒t⁒O⁒n⁒O⁒u⁒t⁒l⁒i⁒n⁒e⁒(F)←𝑑π‘₯π‘‘π‘¦π‘Ÿπ‘Žπ‘›π‘‘π‘œπ‘šπ‘ƒπ‘œπ‘–π‘›π‘‘π‘‚π‘›π‘‚π‘’π‘‘π‘™π‘–π‘›π‘’Ftx,ty\leftarrow randomPointOnOutline(\textbf{F})italic_t italic_x , italic_t italic_y ← italic_r italic_a italic_n italic_d italic_o italic_m italic_P italic_o italic_i italic_n italic_t italic_O italic_n italic_O italic_u italic_t italic_l italic_i italic_n italic_e ( F )
6:Β Β t⁒e⁒r⁒m⁒_⁒c⁒o⁒u⁒n⁒t+=1limit-fromπ‘‘π‘’π‘Ÿπ‘š_π‘π‘œπ‘’π‘›π‘‘1term\_count+=1italic_t italic_e italic_r italic_m _ italic_c italic_o italic_u italic_n italic_t + = 1
7:Β Β T⁒e⁒r⁒m⁒L⁒i⁒s⁒t⁒[t⁒e⁒r⁒m⁒_⁒c⁒o⁒u⁒n⁒t]=[t⁒x,t⁒y]π‘‡π‘’π‘Ÿπ‘šπΏπ‘–π‘ π‘‘delimited-[]π‘‘π‘’π‘Ÿπ‘š_π‘π‘œπ‘’π‘›π‘‘π‘‘π‘₯𝑑𝑦TermList[term\_count]=[tx,ty]italic_T italic_e italic_r italic_m italic_L italic_i italic_s italic_t [ italic_t italic_e italic_r italic_m _ italic_c italic_o italic_u italic_n italic_t ] = [ italic_t italic_x , italic_t italic_y ]
8:Β Β whileΒ t⁒e⁒r⁒m⁒_⁒c⁒o⁒u⁒n⁒t<n⁒_⁒t⁒e⁒r⁒m⁒sπ‘‘π‘’π‘Ÿπ‘š_π‘π‘œπ‘’π‘›π‘‘π‘›_π‘‘π‘’π‘Ÿπ‘šπ‘ term\_count<n\_termsitalic_t italic_e italic_r italic_m _ italic_c italic_o italic_u italic_n italic_t < italic_n _ italic_t italic_e italic_r italic_m italic_sΒ do
9:Β Β Β Β Β t⁒x,t⁒y←r⁒a⁒n⁒d⁒o⁒m⁒P⁒o⁒i⁒n⁒t⁒O⁒n⁒O⁒u⁒t⁒l⁒i⁒n⁒e⁒(F)←𝑑π‘₯π‘‘π‘¦π‘Ÿπ‘Žπ‘›π‘‘π‘œπ‘šπ‘ƒπ‘œπ‘–π‘›π‘‘π‘‚π‘›π‘‚π‘’π‘‘π‘™π‘–π‘›π‘’Ftx,ty\leftarrow randomPointOnOutline(\textbf{F})italic_t italic_x , italic_t italic_y ← italic_r italic_a italic_n italic_d italic_o italic_m italic_P italic_o italic_i italic_n italic_t italic_O italic_n italic_O italic_u italic_t italic_l italic_i italic_n italic_e ( F )
10:Β Β Β Β Β ifΒ m⁒i⁒n⁒D⁒i⁒s⁒t⁒(T⁒e⁒r⁒m⁒L⁒i⁒s⁒t,[t⁒x,t⁒y])β‰₯t⁒e⁒r⁒m⁒_⁒p⁒i⁒t⁒c⁒hπ‘šπ‘–π‘›π·π‘–π‘ π‘‘π‘‡π‘’π‘Ÿπ‘šπΏπ‘–π‘ π‘‘π‘‘π‘₯π‘‘π‘¦π‘‘π‘’π‘Ÿπ‘š_π‘π‘–π‘‘π‘β„ŽminDist(TermList,[tx,ty])\geq term\_pitchitalic_m italic_i italic_n italic_D italic_i italic_s italic_t ( italic_T italic_e italic_r italic_m italic_L italic_i italic_s italic_t , [ italic_t italic_x , italic_t italic_y ] ) β‰₯ italic_t italic_e italic_r italic_m _ italic_p italic_i italic_t italic_c italic_hΒ then
11:Β Β Β Β Β Β Β Β t⁒e⁒r⁒m⁒_⁒c⁒o⁒u⁒n⁒t+=1limit-fromπ‘‘π‘’π‘Ÿπ‘š_π‘π‘œπ‘’π‘›π‘‘1term\_count+=1italic_t italic_e italic_r italic_m _ italic_c italic_o italic_u italic_n italic_t + = 1
12:Β Β Β Β Β Β Β Β T⁒e⁒r⁒m⁒L⁒i⁒s⁒t⁒[t⁒e⁒r⁒m⁒_⁒c⁒o⁒u⁒n⁒t]=[t⁒x,t⁒y]π‘‡π‘’π‘Ÿπ‘šπΏπ‘–π‘ π‘‘delimited-[]π‘‘π‘’π‘Ÿπ‘š_π‘π‘œπ‘’π‘›π‘‘π‘‘π‘₯𝑑𝑦TermList[term\_count]=[tx,ty]italic_T italic_e italic_r italic_m italic_L italic_i italic_s italic_t [ italic_t italic_e italic_r italic_m _ italic_c italic_o italic_u italic_n italic_t ] = [ italic_t italic_x , italic_t italic_y ]
13:Β Β F←a⁒d⁒d⁒T⁒e⁒r⁒m⁒L⁒o⁒c⁒s⁒(T⁒e⁒r⁒m⁒L⁒i⁒s⁒t)←Fπ‘Žπ‘‘π‘‘π‘‡π‘’π‘Ÿπ‘šπΏπ‘œπ‘π‘ π‘‡π‘’π‘Ÿπ‘šπΏπ‘–π‘ π‘‘\textbf{F}\leftarrow addTermLocs(TermList)F ← italic_a italic_d italic_d italic_T italic_e italic_r italic_m italic_L italic_o italic_c italic_s ( italic_T italic_e italic_r italic_m italic_L italic_i italic_s italic_t )
14:Β Β return F
Algorithm 4 Annotation of Connectivity: annotateNETS
0:Β Β Dπ‘π‘Žπ‘Ÿπ‘‘π‘ ,Dπ‘‘π‘’π‘Ÿπ‘šπ‘ ,Wπ‘π‘Žπ‘Ÿπ‘‘π‘ ,Fsubscriptπ·π‘π‘Žπ‘Ÿπ‘‘π‘ subscriptπ·π‘‘π‘’π‘Ÿπ‘šπ‘ subscriptπ‘Šπ‘π‘Žπ‘Ÿπ‘‘π‘ F\mathit{D_{parts}},\mathit{D_{terms}},\mathit{W_{parts}},\textbf{F}italic_D start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT , italic_D start_POSTSUBSCRIPT italic_terms end_POSTSUBSCRIPT , italic_W start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT , F
1:Β Β n⁒_⁒b⁒2⁒b⁒_⁒n⁒e⁒t⁒s=i⁒n⁒t⁒(n⁒_⁒p⁒a⁒r⁒t⁒sβˆ—Dπ‘π‘Žπ‘Ÿπ‘‘π‘ )𝑛_𝑏2𝑏_𝑛𝑒𝑑𝑠𝑖𝑛𝑑𝑛_π‘π‘Žπ‘Ÿπ‘‘π‘ subscriptπ·π‘π‘Žπ‘Ÿπ‘‘π‘ n\_b2b\_nets=int(n\_parts*\mathit{D_{parts}})italic_n _ italic_b 2 italic_b _ italic_n italic_e italic_t italic_s = italic_i italic_n italic_t ( italic_n _ italic_p italic_a italic_r italic_t italic_s βˆ— italic_D start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT )Number of inter-partition nets
2:Β Β n⁒_⁒t⁒2⁒b⁒_⁒n⁒e⁒t⁒s=n⁒_⁒n⁒e⁒t⁒sβˆ—Dπ‘‘π‘’π‘Ÿπ‘šπ‘ π‘›_𝑑2𝑏_𝑛𝑒𝑑𝑠𝑛_𝑛𝑒𝑑𝑠subscriptπ·π‘‘π‘’π‘Ÿπ‘šπ‘ n\_t2b\_nets=n\_nets*\mathit{D_{terms}}italic_n _ italic_t 2 italic_b _ italic_n italic_e italic_t italic_s = italic_n _ italic_n italic_e italic_t italic_s βˆ— italic_D start_POSTSUBSCRIPT italic_terms end_POSTSUBSCRIPT Number of partition-terminal nets
3:Β Β P⁒D⁒i⁒s⁒t←p⁒a⁒i⁒r⁒w⁒i⁒s⁒e⁒B⁒2⁒B⁒D⁒i⁒s⁒t⁒a⁒n⁒c⁒e⁒(F)β†π‘ƒπ·π‘–π‘ π‘‘π‘π‘Žπ‘–π‘Ÿπ‘€π‘–π‘ π‘’π΅2π΅π·π‘–π‘ π‘‘π‘Žπ‘›π‘π‘’FPDist\leftarrow pairwiseB2BDistance(\textbf{F})italic_P italic_D italic_i italic_s italic_t ← italic_p italic_a italic_i italic_r italic_w italic_i italic_s italic_e italic_B 2 italic_B italic_D italic_i italic_s italic_t italic_a italic_n italic_c italic_e ( F )
4:Β Β T⁒D⁒i⁒s⁒t←p⁒a⁒i⁒r⁒w⁒i⁒s⁒e⁒T⁒2⁒B⁒D⁒i⁒s⁒t⁒a⁒n⁒c⁒e⁒(F)β†π‘‡π·π‘–π‘ π‘‘π‘π‘Žπ‘–π‘Ÿπ‘€π‘–π‘ π‘’π‘‡2π΅π·π‘–π‘ π‘‘π‘Žπ‘›π‘π‘’FTDist\leftarrow pairwiseT2BDistance(\textbf{F})italic_T italic_D italic_i italic_s italic_t ← italic_p italic_a italic_i italic_r italic_w italic_i italic_s italic_e italic_T 2 italic_B italic_D italic_i italic_s italic_t italic_a italic_n italic_c italic_e ( F )Extract Manhattan distance
5:Β Β P⁒S⁒i⁒m←1βˆ’N⁒o⁒r⁒m⁒a⁒l⁒i⁒z⁒e⁒(P⁒D⁒i⁒s⁒t)β†π‘ƒπ‘†π‘–π‘š1π‘π‘œπ‘Ÿπ‘šπ‘Žπ‘™π‘–π‘§π‘’π‘ƒπ·π‘–π‘ π‘‘PSim\leftarrow 1-Normalize(PDist)italic_P italic_S italic_i italic_m ← 1 - italic_N italic_o italic_r italic_m italic_a italic_l italic_i italic_z italic_e ( italic_P italic_D italic_i italic_s italic_t )
6:Β Β T⁒S⁒i⁒m←1βˆ’N⁒o⁒r⁒m⁒a⁒l⁒i⁒z⁒e⁒(T⁒D⁒i⁒s⁒t)β†π‘‡π‘†π‘–π‘š1π‘π‘œπ‘Ÿπ‘šπ‘Žπ‘™π‘–π‘§π‘’π‘‡π·π‘–π‘ π‘‘TSim\leftarrow 1-Normalize(TDist)italic_T italic_S italic_i italic_m ← 1 - italic_N italic_o italic_r italic_m italic_a italic_l italic_i italic_z italic_e ( italic_T italic_D italic_i italic_s italic_t )Probabilities measured as inverse of distance
7:Β Β b2bConnectivity←Sample(F,size=n_b2b_nets,p=PSim)b2bConnectivity\leftarrow Sample(\textbf{F},size=n\_b2b\_nets,p=PSim)italic_b 2 italic_b italic_C italic_o italic_n italic_n italic_e italic_c italic_t italic_i italic_v italic_i italic_t italic_y ← italic_S italic_a italic_m italic_p italic_l italic_e ( F , italic_s italic_i italic_z italic_e = italic_n _ italic_b 2 italic_b _ italic_n italic_e italic_t italic_s , italic_p = italic_P italic_S italic_i italic_m )
8:Β Β b2bweights←Sample(Wπ‘π‘Žπ‘Ÿπ‘‘π‘ ,size=n_b2b_nets,p=PSim)b2bweights\leftarrow Sample(\mathit{W_{parts}},size=n\_b2b\_nets,p=PSim)italic_b 2 italic_b italic_w italic_e italic_i italic_g italic_h italic_t italic_s ← italic_S italic_a italic_m italic_p italic_l italic_e ( italic_W start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT , italic_s italic_i italic_z italic_e = italic_n _ italic_b 2 italic_b _ italic_n italic_e italic_t italic_s , italic_p = italic_P italic_S italic_i italic_m )
9:Β Β t2bConnectivity←Sample(F,size=n_p2b_nets,p=TSim)t2bConnectivity\leftarrow Sample(\textbf{F},size=n\_p2b\_nets,p=TSim)italic_t 2 italic_b italic_C italic_o italic_n italic_n italic_e italic_c italic_t italic_i italic_v italic_i italic_t italic_y ← italic_S italic_a italic_m italic_p italic_l italic_e ( F , italic_s italic_i italic_z italic_e = italic_n _ italic_p 2 italic_b _ italic_n italic_e italic_t italic_s , italic_p = italic_T italic_S italic_i italic_m )
10:Β Β F←a⁒d⁒d⁒N⁒e⁒t⁒s⁒(b⁒2⁒b⁒C⁒o⁒n⁒n⁒e⁒c⁒t⁒i⁒v⁒i⁒t⁒y,b⁒2⁒b⁒w⁒e⁒i⁒g⁒h⁒t⁒s,t⁒2⁒b⁒C⁒o⁒n⁒n⁒e⁒c⁒t⁒i⁒v⁒i⁒t⁒y)←Fπ‘Žπ‘‘π‘‘π‘π‘’π‘‘π‘ π‘2π‘πΆπ‘œπ‘›π‘›π‘’π‘π‘‘π‘–π‘£π‘–π‘‘π‘¦π‘2π‘π‘€π‘’π‘–π‘”β„Žπ‘‘π‘ π‘‘2π‘πΆπ‘œπ‘›π‘›π‘’π‘π‘‘π‘–π‘£π‘–π‘‘π‘¦\textbf{F}\leftarrow addNets(b2bConnectivity,b2bweights,t2bConnectivity)F ← italic_a italic_d italic_d italic_N italic_e italic_t italic_s ( italic_b 2 italic_b italic_C italic_o italic_n italic_n italic_e italic_c italic_t italic_i italic_v italic_i italic_t italic_y , italic_b 2 italic_b italic_w italic_e italic_i italic_g italic_h italic_t italic_s , italic_t 2 italic_b italic_C italic_o italic_n italic_n italic_e italic_c italic_t italic_i italic_v italic_i italic_t italic_y )Sample net-weights and net-connections using probabilities
11:Β Β return F
Algorithm 5 Annotation of Placement Constraints: annotateCONSTRAINTS
0:Β Β Eπ‘π‘Žπ‘Ÿπ‘‘π‘ ,Cπ‘π‘Žπ‘Ÿπ‘‘π‘ ,Nπ‘π‘™π‘’π‘ π‘‘π‘’π‘Ÿπ‘ ,Pπ‘π‘Žπ‘Ÿπ‘‘π‘ ,Mπ‘π‘Žπ‘Ÿπ‘‘π‘ β’FsubscriptπΈπ‘π‘Žπ‘Ÿπ‘‘π‘ subscriptπΆπ‘π‘Žπ‘Ÿπ‘‘π‘ subscriptπ‘π‘π‘™π‘’π‘ π‘‘π‘’π‘Ÿπ‘ subscriptπ‘ƒπ‘π‘Žπ‘Ÿπ‘‘π‘ subscriptπ‘€π‘π‘Žπ‘Ÿπ‘‘π‘ F\mathit{E_{parts}},\mathit{C_{parts},\mathit{N_{clusters}},\mathit{P_{parts}},% \mathit{M_{parts}}}\textbf{F}italic_E start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT , italic_C start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT , italic_N start_POSTSUBSCRIPT italic_clusters end_POSTSUBSCRIPT , italic_P start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT , italic_M start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT F
1:Β Β n⁒_⁒b⁒o⁒u⁒n⁒d⁒a⁒r⁒y⁒_⁒p⁒a⁒r⁒t⁒s=i⁒n⁒t⁒(n⁒_⁒p⁒a⁒r⁒t⁒sβˆ—Eπ‘π‘Žπ‘Ÿπ‘‘π‘ )𝑛_π‘π‘œπ‘’π‘›π‘‘π‘Žπ‘Ÿπ‘¦_π‘π‘Žπ‘Ÿπ‘‘π‘ π‘–π‘›π‘‘π‘›_π‘π‘Žπ‘Ÿπ‘‘π‘ subscriptπΈπ‘π‘Žπ‘Ÿπ‘‘π‘ n\_boundary\_parts=int(n\_parts*\mathit{E_{parts}})italic_n _ italic_b italic_o italic_u italic_n italic_d italic_a italic_r italic_y _ italic_p italic_a italic_r italic_t italic_s = italic_i italic_n italic_t ( italic_n _ italic_p italic_a italic_r italic_t italic_s βˆ— italic_E start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT )
2:Β Β n⁒_⁒c⁒l⁒u⁒s⁒t⁒e⁒r⁒e⁒d⁒_⁒p⁒a⁒r⁒t⁒s=i⁒n⁒t⁒(n⁒_⁒p⁒a⁒r⁒t⁒sβˆ—Cπ‘π‘Žπ‘Ÿπ‘‘π‘ )𝑛_π‘π‘™π‘’π‘ π‘‘π‘’π‘Ÿπ‘’π‘‘_π‘π‘Žπ‘Ÿπ‘‘π‘ π‘–π‘›π‘‘π‘›_π‘π‘Žπ‘Ÿπ‘‘π‘ subscriptπΆπ‘π‘Žπ‘Ÿπ‘‘π‘ n\_clustered\_parts=int(n\_parts*\mathit{C_{parts}})italic_n _ italic_c italic_l italic_u italic_s italic_t italic_e italic_r italic_e italic_d _ italic_p italic_a italic_r italic_t italic_s = italic_i italic_n italic_t ( italic_n _ italic_p italic_a italic_r italic_t italic_s βˆ— italic_C start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT )
3:Β Β n⁒_⁒p⁒r⁒e⁒p⁒l⁒a⁒c⁒e⁒d⁒_⁒p⁒a⁒r⁒t⁒s=i⁒n⁒t⁒(n⁒_⁒p⁒a⁒r⁒t⁒sβˆ—Pπ‘π‘Žπ‘Ÿπ‘‘π‘ )𝑛_π‘π‘Ÿπ‘’π‘π‘™π‘Žπ‘π‘’π‘‘_π‘π‘Žπ‘Ÿπ‘‘π‘ π‘–π‘›π‘‘π‘›_π‘π‘Žπ‘Ÿπ‘‘π‘ subscriptπ‘ƒπ‘π‘Žπ‘Ÿπ‘‘π‘ n\_preplaced\_parts=int(n\_parts*\mathit{P_{parts}})italic_n _ italic_p italic_r italic_e italic_p italic_l italic_a italic_c italic_e italic_d _ italic_p italic_a italic_r italic_t italic_s = italic_i italic_n italic_t ( italic_n _ italic_p italic_a italic_r italic_t italic_s βˆ— italic_P start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT )
4:Β Β n⁒_⁒m⁒u⁒l⁒t⁒i⁒_⁒i⁒n⁒s⁒t⁒_⁒p⁒a⁒r⁒t⁒s=i⁒n⁒t⁒(n⁒_⁒p⁒a⁒r⁒t⁒sβˆ—Mπ‘π‘Žπ‘Ÿπ‘‘π‘ )𝑛_π‘šπ‘’π‘™π‘‘π‘–_𝑖𝑛𝑠𝑑_π‘π‘Žπ‘Ÿπ‘‘π‘ π‘–π‘›π‘‘π‘›_π‘π‘Žπ‘Ÿπ‘‘π‘ subscriptπ‘€π‘π‘Žπ‘Ÿπ‘‘π‘ n\_multi\_inst\_parts=int(n\_parts*\mathit{M_{parts}})italic_n _ italic_m italic_u italic_l italic_t italic_i _ italic_i italic_n italic_s italic_t _ italic_p italic_a italic_r italic_t italic_s = italic_i italic_n italic_t ( italic_n _ italic_p italic_a italic_r italic_t italic_s βˆ— italic_M start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT )
5:Β Β e⁒D⁒i⁒s⁒t←i⁒n⁒v⁒e⁒r⁒s⁒e⁒e⁒d⁒g⁒e⁒D⁒i⁒s⁒t⁒a⁒n⁒c⁒e⁒s⁒(F)β†π‘’π·π‘–π‘ π‘‘π‘–π‘›π‘£π‘’π‘Ÿπ‘ π‘’π‘’π‘‘π‘”π‘’π·π‘–π‘ π‘‘π‘Žπ‘›π‘π‘’π‘ FeDist\leftarrow inverseedgeDistances(\textbf{F})italic_e italic_D italic_i italic_s italic_t ← italic_i italic_n italic_v italic_e italic_r italic_s italic_e italic_e italic_d italic_g italic_e italic_D italic_i italic_s italic_t italic_a italic_n italic_c italic_e italic_s ( F )
6:Β Β c⁒D⁒i⁒s⁒t←c⁒o⁒n⁒n⁒e⁒c⁒t⁒i⁒v⁒i⁒t⁒y⁒(F)β†π‘π·π‘–π‘ π‘‘π‘π‘œπ‘›π‘›π‘’π‘π‘‘π‘–π‘£π‘–π‘‘π‘¦FcDist\leftarrow connectivity(\textbf{F})italic_c italic_D italic_i italic_s italic_t ← italic_c italic_o italic_n italic_n italic_e italic_c italic_t italic_i italic_v italic_i italic_t italic_y ( F )
7:Β Β F_e←g⁒e⁒t⁒E⁒d⁒g⁒e⁒P⁒a⁒r⁒t⁒s⁒(F)←F_eπ‘”π‘’π‘‘πΈπ‘‘π‘”π‘’π‘ƒπ‘Žπ‘Ÿπ‘‘π‘ F\textbf{F\_e}\leftarrow getEdgeParts(\textbf{F})F_e ← italic_g italic_e italic_t italic_E italic_d italic_g italic_e italic_P italic_a italic_r italic_t italic_s ( F )
8:Β Β bParts←Sample(F_e,size=n_boundary_parts,p=cDist)bParts\leftarrow Sample(\textbf{F\_e},size=n\_boundary\_parts,p=cDist)italic_b italic_P italic_a italic_r italic_t italic_s ← italic_S italic_a italic_m italic_p italic_l italic_e ( F_e , italic_s italic_i italic_z italic_e = italic_n _ italic_b italic_o italic_u italic_n italic_d italic_a italic_r italic_y _ italic_p italic_a italic_r italic_t italic_s , italic_p = italic_c italic_D italic_i italic_s italic_t )
9:Β Β pParts←Sample(F,size=n_preplaced_parts,p=eDist)pParts\leftarrow Sample(\textbf{F},size=n\_preplaced\_parts,p=eDist)italic_p italic_P italic_a italic_r italic_t italic_s ← italic_S italic_a italic_m italic_p italic_l italic_e ( F , italic_s italic_i italic_z italic_e = italic_n _ italic_p italic_r italic_e italic_p italic_l italic_a italic_c italic_e italic_d _ italic_p italic_a italic_r italic_t italic_s , italic_p = italic_e italic_D italic_i italic_s italic_t )
10:Β Β c⁒P⁒a⁒r⁒t⁒s←d⁒e⁒r⁒i⁒v⁒e⁒C⁒l⁒u⁒s⁒t⁒e⁒r⁒s⁒(F,n⁒_⁒c⁒l⁒u⁒s⁒t⁒e⁒r⁒e⁒d⁒_⁒p⁒a⁒r⁒t⁒s,Nπ‘π‘™π‘’π‘ π‘‘π‘’π‘Ÿπ‘ )β†π‘π‘ƒπ‘Žπ‘Ÿπ‘‘π‘ π‘‘π‘’π‘Ÿπ‘–π‘£π‘’πΆπ‘™π‘’π‘ π‘‘π‘’π‘Ÿπ‘ F𝑛_π‘π‘™π‘’π‘ π‘‘π‘’π‘Ÿπ‘’π‘‘_π‘π‘Žπ‘Ÿπ‘‘π‘ subscriptπ‘π‘π‘™π‘’π‘ π‘‘π‘’π‘Ÿπ‘ cParts\leftarrow deriveClusters(\textbf{F},n\_clustered\_parts,\mathit{N_{% clusters}})italic_c italic_P italic_a italic_r italic_t italic_s ← italic_d italic_e italic_r italic_i italic_v italic_e italic_C italic_l italic_u italic_s italic_t italic_e italic_r italic_s ( F , italic_n _ italic_c italic_l italic_u italic_s italic_t italic_e italic_r italic_e italic_d _ italic_p italic_a italic_r italic_t italic_s , italic_N start_POSTSUBSCRIPT italic_clusters end_POSTSUBSCRIPT )
11:Β Β m⁒P⁒a⁒r⁒t⁒s←d⁒e⁒r⁒i⁒v⁒e⁒M⁒u⁒l⁒t⁒i⁒I⁒n⁒s⁒t⁒(F,n⁒_⁒m⁒u⁒l⁒t⁒i⁒_⁒i⁒n⁒s⁒t⁒_⁒p⁒a⁒r⁒t⁒s)β†π‘šπ‘ƒπ‘Žπ‘Ÿπ‘‘π‘ π‘‘π‘’π‘Ÿπ‘–π‘£π‘’π‘€π‘’π‘™π‘‘π‘–πΌπ‘›π‘ π‘‘F𝑛_π‘šπ‘’π‘™π‘‘π‘–_𝑖𝑛𝑠𝑑_π‘π‘Žπ‘Ÿπ‘‘π‘ mParts\leftarrow deriveMultiInst(\textbf{F},n\_multi\_inst\_parts)italic_m italic_P italic_a italic_r italic_t italic_s ← italic_d italic_e italic_r italic_i italic_v italic_e italic_M italic_u italic_l italic_t italic_i italic_I italic_n italic_s italic_t ( F , italic_n _ italic_m italic_u italic_l italic_t italic_i _ italic_i italic_n italic_s italic_t _ italic_p italic_a italic_r italic_t italic_s )
12:Β Β F←a⁒d⁒d⁒C⁒o⁒n⁒s⁒t⁒r⁒a⁒i⁒n⁒t⁒s⁒(b⁒P⁒a⁒r⁒t⁒s,c⁒P⁒a⁒r⁒t⁒s,p⁒P⁒a⁒r⁒t⁒s,m⁒P⁒a⁒r⁒t⁒s)←Fπ‘Žπ‘‘π‘‘πΆπ‘œπ‘›π‘ π‘‘π‘Ÿπ‘Žπ‘–π‘›π‘‘π‘ π‘π‘ƒπ‘Žπ‘Ÿπ‘‘π‘ π‘π‘ƒπ‘Žπ‘Ÿπ‘‘π‘ π‘π‘ƒπ‘Žπ‘Ÿπ‘‘π‘ π‘šπ‘ƒπ‘Žπ‘Ÿπ‘‘π‘ \textbf{F}\leftarrow addConstraints(bParts,cParts,pParts,mParts)F ← italic_a italic_d italic_d italic_C italic_o italic_n italic_s italic_t italic_r italic_a italic_i italic_n italic_t italic_s ( italic_b italic_P italic_a italic_r italic_t italic_s , italic_c italic_P italic_a italic_r italic_t italic_s , italic_p italic_P italic_a italic_r italic_t italic_s , italic_m italic_P italic_a italic_r italic_t italic_s )
13:Β Β return F

Special case of π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSet-Prime (rectilinear_flag = 0): Although we observe that partition shapes or sub-system shapes in real circuits are rectilinear, the current literature is far from handing arbitrarily rectilinear partitions under hard constraints. Therefore, we provide a mechanism to generate a simpler case of theπ™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSet-Prime dataset by setting rectilinear_flag to 00. The layouts thus generated will be fully abutted rectangular shapes. The near-optimal connectivity and annotation of hard constraints remain unchanged.

3.4. π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSet-Lite: Rectangular Partitions

Fully abutted, rectilinear shapes of partitions in a SoC or a sub-system typically emerge in the later stages of floorplanning. Such rectilinear shapes truly capture the complexity of industrial floorplanning formulation. However, in the initial design exploration stages, designers commonly begin with rectangular partitions, prioritizing finding optimal locations and early design goals (e.g., timing budgets and area requirements). At this stage, the assumption of rectangular partitions often results in the formation of channels or white-spaces. This use-case is also an important problem for design-space exploration, although less challenging than the fully-rectilinear counterpart. Therefore, we introduce an additional dataset, π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSet-Lite, to reflect such scenarios. The pseudocode of π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSet-Lite pipeline is shown in Algorithm 6. While π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSet-Prime decomposes the fixed-outline layout into fully-abutted rectilinear partitions, π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSet-Lite allows for gaps or whites-paces on the layout, to accommodate the rectangular assumption of partitions. As a result, we employ a slight change in the data generation pipeline to generate layouts with white-space while maintaining near-optimal characteristics of area and wire-length. It is well established that heuristic search algorithms such as Simulated Annealing (SA) excel at the unconstrained floorplanning problem (adya01; adya03), particularly when the joint objective of wire-length and area is removed. When the focus shifts solely to minimizing white-space, SA demonstrates exceptional performance. Therefore, as shown in line 6 of Algorithm 6, we use SA to generate a packing solution for rectangular partitions while respecting the provided fixed-outline aspect ratio. This solution is near-optimal by construction in terms of area, with some white-space (primarily because of the rectangular assumption). As shown in lines 7-11, the rest of the process (terminal annotation, connectivity annotation and placement-constraint annotation) is identical to that of π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSet-Prime. Similar to the π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSet-Prime flow, π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSet-Lite uses the configuration file (Figure 4) to generate 1M training samples and 100 validation test cases.

Algorithm 6 π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSet-Lite: Generating optimal layouts with constraint annotation
0:Β Β Input Configuration: Ic⁒o⁒n⁒f⁒i⁒gsubscriptπΌπ‘π‘œπ‘›π‘“π‘–π‘”I_{config}italic_I start_POSTSUBSCRIPT italic_c italic_o italic_n italic_f italic_i italic_g end_POSTSUBSCRIPT = num_layouts, foutline_shape, num_partitions, rectilinear_flag, placement_constraints, dataset_mode = Prime Target distribution: (Aπ‘π‘Žπ‘Ÿπ‘‘π‘ ,Nπ‘‘π‘’π‘Ÿπ‘šπ‘ π‘π‘Žπ‘Ÿπ‘‘π‘ ,Dπ‘π‘Žπ‘Ÿπ‘‘π‘ ,Wπ‘π‘Žπ‘Ÿπ‘‘π‘ ,Dπ‘‘π‘’π‘Ÿπ‘šπ‘ ,(\mathit{A_{parts}},\mathit{N_{terms}^{parts}},\mathit{D_{parts}},\mathit{W_{% parts}},\mathit{D_{terms}},( italic_A start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT , italic_N start_POSTSUBSCRIPT italic_terms end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_parts end_POSTSUPERSCRIPT , italic_D start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT , italic_W start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT , italic_D start_POSTSUBSCRIPT italic_terms end_POSTSUBSCRIPT , Eπ‘π‘Žπ‘Ÿπ‘‘π‘ ,Cπ‘π‘Žπ‘Ÿπ‘‘π‘ ,Nπ‘π‘™π‘’π‘ π‘‘π‘’π‘Ÿπ‘ ,Pπ‘π‘Žπ‘Ÿπ‘‘π‘ ,Mπ‘π‘Žπ‘Ÿπ‘‘π‘ )\mathit{E_{parts}},\mathit{C_{parts}},\mathit{N_{clusters}},\mathit{P_{parts}}% ,\mathit{M_{parts}})italic_E start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT , italic_C start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT , italic_N start_POSTSUBSCRIPT italic_clusters end_POSTSUBSCRIPT , italic_P start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT , italic_M start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT )
1:Β Β L⁒a⁒y⁒o⁒u⁒t⁒s=βˆ…πΏπ‘Žπ‘¦π‘œπ‘’π‘‘π‘ Layouts=\emptysetitalic_L italic_a italic_y italic_o italic_u italic_t italic_s = βˆ…
2:Β Β i⁒n⁒d⁒e⁒x=0𝑖𝑛𝑑𝑒π‘₯0index=0italic_i italic_n italic_d italic_e italic_x = 0
3:Β Β whileΒ i⁒n⁒d⁒e⁒x<n⁒u⁒m⁒_⁒l⁒a⁒y⁒o⁒u⁒t⁒s𝑖𝑛𝑑𝑒π‘₯π‘›π‘’π‘š_π‘™π‘Žπ‘¦π‘œπ‘’π‘‘π‘ index<num\_layoutsitalic_i italic_n italic_d italic_e italic_x < italic_n italic_u italic_m _ italic_l italic_a italic_y italic_o italic_u italic_t italic_s Β do
4:Β Β Β Β Β F=βˆ…F\textbf{F}=\emptysetF = βˆ… Internal geometric representation of the layout
5:Β Β Β Β Β W,H,n⁒_⁒p⁒a⁒r⁒t⁒s←s⁒a⁒m⁒p⁒l⁒e⁒(f⁒o⁒u⁒t⁒l⁒i⁒n⁒e⁒_⁒s⁒h⁒a⁒p⁒e,n⁒u⁒m⁒_⁒p⁒a⁒r⁒t⁒i⁒t⁒i⁒o⁒n⁒s)β†π‘Šπ»π‘›_π‘π‘Žπ‘Ÿπ‘‘π‘ π‘ π‘Žπ‘šπ‘π‘™π‘’π‘“π‘œπ‘’π‘‘π‘™π‘–π‘›π‘’_π‘ β„Žπ‘Žπ‘π‘’π‘›π‘’π‘š_π‘π‘Žπ‘Ÿπ‘‘π‘–π‘‘π‘–π‘œπ‘›π‘ W,H,n\_parts\leftarrow sample(foutline\_shape,num\_partitions)italic_W , italic_H , italic_n _ italic_p italic_a italic_r italic_t italic_s ← italic_s italic_a italic_m italic_p italic_l italic_e ( italic_f italic_o italic_u italic_t italic_l italic_i italic_n italic_e _ italic_s italic_h italic_a italic_p italic_e , italic_n italic_u italic_m _ italic_p italic_a italic_r italic_t italic_i italic_t italic_i italic_o italic_n italic_s ) Fixed-outline dimensions & number of partitions
6:Β Β Β Β Β F←r⁒u⁒n⁒S⁒A⁒(W,H,n⁒_⁒p⁒a⁒r⁒t⁒s,Aπ‘π‘Žπ‘Ÿπ‘‘π‘ )←Fπ‘Ÿπ‘’π‘›π‘†π΄π‘Šπ»π‘›_π‘π‘Žπ‘Ÿπ‘‘π‘ subscriptπ΄π‘π‘Žπ‘Ÿπ‘‘π‘ \textbf{F}\leftarrow runSA(W,H,n\_parts,\mathit{A_{parts}})F ← italic_r italic_u italic_n italic_S italic_A ( italic_W , italic_H , italic_n _ italic_p italic_a italic_r italic_t italic_s , italic_A start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT ) Run Parquet (Simulated Annealing) for area optimization
7:Β Β Β Β Β F←a⁒n⁒n⁒o⁒t⁒a⁒t⁒e⁒T⁒E⁒R⁒M⁒I⁒N⁒A⁒L⁒S⁒(Nπ‘‘π‘’π‘Ÿπ‘šπ‘ π‘π‘Žπ‘Ÿπ‘‘π‘ ,n⁒_⁒p⁒a⁒r⁒t⁒s,t⁒e⁒r⁒m⁒_⁒p⁒i⁒t⁒c⁒h⁒F)←Fπ‘Žπ‘›π‘›π‘œπ‘‘π‘Žπ‘‘π‘’π‘‡πΈπ‘…π‘€πΌπ‘π΄πΏπ‘†superscriptsubscriptπ‘π‘‘π‘’π‘Ÿπ‘šπ‘ π‘π‘Žπ‘Ÿπ‘‘π‘ π‘›_π‘π‘Žπ‘Ÿπ‘‘π‘ π‘‘π‘’π‘Ÿπ‘š_π‘π‘–π‘‘π‘β„ŽF\textbf{F}\leftarrow annotateTERMINALS(\mathit{N_{terms}^{parts}},n\_parts,% term\_pitch\textbf{F})F ← italic_a italic_n italic_n italic_o italic_t italic_a italic_t italic_e italic_T italic_E italic_R italic_M italic_I italic_N italic_A italic_L italic_S ( italic_N start_POSTSUBSCRIPT italic_terms end_POSTSUBSCRIPT start_POSTSUPERSCRIPT italic_parts end_POSTSUPERSCRIPT , italic_n _ italic_p italic_a italic_r italic_t italic_s , italic_t italic_e italic_r italic_m _ italic_p italic_i italic_t italic_c italic_h F )
8:Β Β Β Β Β F←a⁒n⁒n⁒o⁒t⁒a⁒t⁒e⁒N⁒E⁒T⁒S⁒(Dπ‘π‘Žπ‘Ÿπ‘‘π‘ ,Dπ‘‘π‘’π‘Ÿπ‘šπ‘ ,Wπ‘π‘Žπ‘Ÿπ‘‘π‘ ,n⁒_⁒p⁒a⁒r⁒t⁒s,F)←Fπ‘Žπ‘›π‘›π‘œπ‘‘π‘Žπ‘‘π‘’π‘πΈπ‘‡π‘†subscriptπ·π‘π‘Žπ‘Ÿπ‘‘π‘ subscriptπ·π‘‘π‘’π‘Ÿπ‘šπ‘ subscriptπ‘Šπ‘π‘Žπ‘Ÿπ‘‘π‘ π‘›_π‘π‘Žπ‘Ÿπ‘‘π‘ F\textbf{F}\leftarrow annotateNETS(\mathit{D_{parts}},\mathit{D_{terms}},% \mathit{W_{parts}},n\_parts,\textbf{F})F ← italic_a italic_n italic_n italic_o italic_t italic_a italic_t italic_e italic_N italic_E italic_T italic_S ( italic_D start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT , italic_D start_POSTSUBSCRIPT italic_terms end_POSTSUBSCRIPT , italic_W start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT , italic_n _ italic_p italic_a italic_r italic_t italic_s , F )
9:Β Β Β Β Β ifΒ placement_constraints == 1Β then
10:Β Β Β Β Β Β Β Β F←annotateCONSTRAINTS(Eπ‘π‘Žπ‘Ÿπ‘‘π‘ ,Cπ‘π‘Žπ‘Ÿπ‘‘π‘ ,Nπ‘π‘™π‘’π‘ π‘‘π‘’π‘Ÿπ‘ ,Pπ‘π‘Žπ‘Ÿπ‘‘π‘ ,\textbf{F}\leftarrow annotateCONSTRAINTS(\mathit{E_{parts}},\mathit{C_{parts}}% ,\mathit{N_{clusters}},\mathit{P_{parts}},F ← italic_a italic_n italic_n italic_o italic_t italic_a italic_t italic_e italic_C italic_O italic_N italic_S italic_T italic_R italic_A italic_I italic_N italic_T italic_S ( italic_E start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT , italic_C start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT , italic_N start_POSTSUBSCRIPT italic_clusters end_POSTSUBSCRIPT , italic_P start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT , Mπ‘π‘Žπ‘Ÿπ‘‘π‘ ,F)\mathit{M_{parts}},\textbf{F})italic_M start_POSTSUBSCRIPT italic_parts end_POSTSUBSCRIPT , F )
11:Β Β Β Β Β i⁒n⁒d⁒e⁒x+=1limit-from𝑖𝑛𝑑𝑒π‘₯1index+=1italic_i italic_n italic_d italic_e italic_x + = 1
12:Β Β Β Β Β b⁒l⁒o⁒c⁒k⁒s,n⁒e⁒t⁒s,p⁒l←c⁒o⁒n⁒v⁒e⁒r⁒t⁒B⁒O⁒O⁒K⁒S⁒H⁒E⁒L⁒F⁒(F)β†π‘π‘™π‘œπ‘π‘˜π‘ π‘›π‘’π‘‘π‘ π‘π‘™π‘π‘œπ‘›π‘£π‘’π‘Ÿπ‘‘π΅π‘‚π‘‚πΎπ‘†π»πΈπΏπΉFblocks,nets,pl\leftarrow convertBOOKSHELF(\textbf{F})italic_b italic_l italic_o italic_c italic_k italic_s , italic_n italic_e italic_t italic_s , italic_p italic_l ← italic_c italic_o italic_n italic_v italic_e italic_r italic_t italic_B italic_O italic_O italic_K italic_S italic_H italic_E italic_L italic_F ( F )
13:Β Β Β Β Β L⁒a⁒y⁒o⁒u⁒t⁒s⁒[i⁒n⁒d⁒e⁒x]=[b⁒l⁒o⁒c⁒k⁒s,n⁒e⁒t⁒s,p⁒l,F]πΏπ‘Žπ‘¦π‘œπ‘’π‘‘π‘ delimited-[]𝑖𝑛𝑑𝑒π‘₯π‘π‘™π‘œπ‘π‘˜π‘ π‘›π‘’π‘‘π‘ π‘π‘™FLayouts[index]=[blocks,nets,pl,\textbf{F}]italic_L italic_a italic_y italic_o italic_u italic_t italic_s [ italic_i italic_n italic_d italic_e italic_x ] = [ italic_b italic_l italic_o italic_c italic_k italic_s , italic_n italic_e italic_t italic_s , italic_p italic_l , F ]

4. Experiments

4.1. Analysis of FloorSet

While the 1111M synthetic training layouts in π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSet-Prime and π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSet-Lite are intended for training ML models, we reserve the 100100100100 test cases in each dataset to be used as a standard benchmark. In each dataset, the following labels serve as performance metrics: (a) area, (b) weighted wire-lengths (inter-partition and partition-to-terminal), and (c) violation count for each of the five placement constraints. E.g., if tensor F represents the validation dataset, one can retrieve the metric list of test-case i𝑖iitalic_i using F[i𝑖iitalic_i][”labels”]. The metric list has three components, in a list format [area, inter-partition wire-length, terminal-to-partition wire-length]. Since the dataset is devoid of constraint violations by construction, we do not explicitly store the violation count.

To underscore the complexity of π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSet, we run classical SA (btree06) with a constraint-penalty on the π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSetβ€… validation set. Figure 10 presents scatter plots (left) for one data-point from the validation sets of π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSet-Prime (top) and π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSet-Lite (bottom). The relative area and wire-length are derived using the corresponding metrics from π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSetΒ as the baseline; the golden layout on this relative scale is indicated by the green dot at (1111, 1111). For π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSet-Prime, we observe that the solutions are significantly sub-optimal in terms of wire-length and area. Crucially, all solutions exhibit constraint violations. While solutions obtained on π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSet-Lite’s problem are closer to the optimal in terms of area, minimizing wire-length and fixing constraint violations remain a big challenge. The desired behavior of any future baseline is to approach the green dots, while respecting the hard-constraints. Figure 10 also shows the layout images of the corresponding golden data. The top-right figure shows an example 25-partition π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSet-Prime layout (corresponding to the green dot on top-left figure). The bottom-right figure shows an example 65-partition π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSet-Lite layout (corresponding to the green dot on bottom-left figure). The synthetic layout of π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSet-Prime (top-right) closely resembles partition shapes in real-word layouts.

Refer to caption
Figure 10. Scatter plots (left) and the corresponding constraint annotated optimal layouts (right) indicating the optimality gap and violations of hard constraints, when applying classical SA on a test cases picked from the validation set of π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSet-Prime (top) and π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSet-Lite (bottom). On π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSet-Lite, SA is able to find more area-optimal placements compared to π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSet-Prime - consistent with the former’s simplified rectangular partitions. However, almost all solutions discovered by SA on both datasets have constraint violations.

4.2. Distributions of π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSetΒ Characteristics

While Section 4.1 underscores the complexity of π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSet-Prime benchmarks and highlights the sub-optimal performance of existing methods, it remains essential to establish the resemblance between these complex synthetic layouts and real-world counterparts in terms of their circuit characteristics. Figure 11 compares the probability density function (PDF) of synthetic and real layouts using their shape and connectivity metrics. The left plot depicts the partition-level shape distribution by plotting the PDF with respect to the aspect ratios of individual partitions. The proximity of real PDF (red) and the π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSet-Prime PDF (black) is a clear indication of the resemblance between the shapes of synthetic and real layouts. Similarly, the plot on the right shows the PDF of inter-partition wire-length. The normalization of wire-length allows for a direct comparison. The closeness of the red and black curves illustrates that the synthetic layouts closely reflect the inherent connectivity distribution observed in real-world layouts.

Refer to caption
Figure 11. Comparison between distributions of partition characteristics in π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSetβ€… vs real designs. Distributions of aspect ratio (left) and inter-partition wire-length (right) in π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSetβ€… closely match that of real SoC designs.

5. Conclusions

This paper introduces FloorSet, a VLSI floorplanning dataset that reflects the complexities and constraints of modern SoC design. Crucially, it provides large-scale training data that is necessary to develop modern ML techniques to solve floorplanning problems. π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSet-Lite, with near-optimal packing and wire-length for rectangular partitions, represents early stages of design. π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSet-Prime, with the added complexity of fully-abutted rectilinear blocks, represents the final stages of design. π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSetΒ is constructed by sampling outline and wire-length values from distributions derived from real, commercial SoC designs. We hope that π™΅πš•πš˜πš˜πš›πš‚πšŽπšπ™΅πš•πš˜πš˜πš›πš‚πšŽπš\mathtt{FloorSet}typewriter_FloorSetΒ spurs novel solutions in the area of complex combinatorial optimization that significantly advance the field of EDA.

\printbibliography