From fce164299a2279614ee9e9790ac4effccba1d8ea Mon Sep 17 00:00:00 2001 From: annoyatron255 Date: Mon, 18 Mar 2024 00:06:49 -0500 Subject: [PATCH] initial commit --- gal_dff.lib | 11 + inv_techmap.v | 40 +++ macrocell.v | 28 ++ pla.v | 65 ++++ pre_techmap.json | 106 ++++++ synth_gal.ys | 53 +++ test.v | 20 ++ test.v.old | 96 ++++++ test_synth.blif | 47 +++ test_synth.json | 837 +++++++++++++++++++++++++++++++++++++++++++++++ test_synth.rtlil | 365 +++++++++++++++++++++ test_synth.txt | 84 +++++ test_synth.v | 396 ++++++++++++++++++++++ 13 files changed, 2148 insertions(+) create mode 100644 gal_dff.lib create mode 100644 inv_techmap.v create mode 100644 macrocell.v create mode 100644 pla.v create mode 100644 pre_techmap.json create mode 100644 synth_gal.ys create mode 100644 test.v create mode 100644 test.v.old create mode 100644 test_synth.blif create mode 100644 test_synth.json create mode 100644 test_synth.rtlil create mode 100644 test_synth.txt create mode 100644 test_synth.v diff --git a/gal_dff.lib b/gal_dff.lib new file mode 100644 index 0000000..642d3e0 --- /dev/null +++ b/gal_dff.lib @@ -0,0 +1,11 @@ +library(gal_dff) { + cell(DFF_P) { + ff(IQ, IQN) { + clocked_on: "C"; + next_state: "D"; + } + pin(D) { direction: input; } + pin(C) { direction: input; clock: true; } + pin(Q) { direction: output; function: "IQ"; } + } +} diff --git a/inv_techmap.v b/inv_techmap.v new file mode 100644 index 0000000..2497e82 --- /dev/null +++ b/inv_techmap.v @@ -0,0 +1,40 @@ +module GAL_SOP (A, Y); + +parameter WIDTH = 0; +parameter DEPTH = 0; +parameter TABLE = 0; + +input [WIDTH-1:0] A; +output reg Y; + +\$sop #( + .WIDTH(WIDTH), + .DEPTH(DEPTH), + .TABLE(TABLE) +) sop_partial ( + .A(A), + .Y(Y) +); + +endmodule + +module DFF_P (C, D, Q); + +input C, D; +output Q; + +\$_DFF_P_ dff_inst (.C(C), .D(D), .Q(Q)); + +endmodule + +module NDFF_P (C, D, Q); + +input C, D; +output Q; + +wire Y; + +\$_NOT_ not_inst (.A(D), .Y(Y)); +\$_DFF_P_ dff_inst (.C(C), .D(Y), .Q(Q)); + +endmodule diff --git a/macrocell.v b/macrocell.v new file mode 100644 index 0000000..0115647 --- /dev/null +++ b/macrocell.v @@ -0,0 +1,28 @@ +module NDFF_P ( + input C, D, + output Q +); + +wire Y; + +$_NOT_ not_inst (.A(D), .Y(Y)); +DFF_P dff_inst (.D(Y), .C(C), .Q(Q)); + +endmodule + +/*module GAL_MACROCELL #( + parameter ACTIVE_HIGH = 0, + parameter REGISTERED = 0, +)( + input clk, + + input data, + + input in, + output out, +); + +$_NOT_ not_inst (.A(D), .Y(Y)); +DFF_P dff_inst (.D(Y), .C(C), .Q(Q)); + +endmodule*/ diff --git a/pla.v b/pla.v new file mode 100644 index 0000000..80d70d1 --- /dev/null +++ b/pla.v @@ -0,0 +1,65 @@ +`ifndef PLA_MAX_PRODUCTS +$fatal(1, "Macro PLA_MAX_PRODUCTS must be defined"); +`endif + +(* techmap_celltype = "$sop $__sop" *) +module _80_sop (A, Y); + +parameter WIDTH = 0; +parameter DEPTH = 0; +parameter TABLE = 0; + +input [WIDTH-1:0] A; +output reg Y; + +// Add a blank variable to TABLE +function [2*(WIDTH+1)*DEPTH-1:0] add_var_table; + integer i, j; + for (i = 0; i < DEPTH; i=i+1) begin + for (j = 0; j < WIDTH + 1; j=j+1) begin + if (j < WIDTH) begin + add_var_table[2*(WIDTH+1)*i + 2*j + 0] = TABLE[2*WIDTH*i + 2*j + 0]; + add_var_table[2*(WIDTH+1)*i + 2*j + 1] = TABLE[2*WIDTH*i + 2*j + 1]; + end else begin + add_var_table[2*(WIDTH+1)*i + 2*j + 0] = 1'b0; + add_var_table[2*(WIDTH+1)*i + 2*j + 1] = 1'b0; + end + end + end +endfunction + +generate + genvar i, j; + if (DEPTH <= `PLA_MAX_PRODUCTS) begin // Convert to GAL_SOP object if it fits + GAL_SOP #( + .WIDTH(WIDTH), + .DEPTH(DEPTH), + .TABLE(TABLE)) + _TECHMAP_REPLACE_ ( + .A(A), + .Y(Y) + ); + end else begin // Otherwise split into two new SOP objects + wire partial; + \$__sop #( + .WIDTH(WIDTH), + .DEPTH(`PLA_MAX_PRODUCTS), + .TABLE(TABLE[2*WIDTH*`PLA_MAX_PRODUCTS-1:0]) + ) sop_partial ( + .A(A), + .Y(partial) + ); + + localparam EXTRA_VAR_TABLE = add_var_table(); + \$__sop #( + .WIDTH(WIDTH+1), + .DEPTH(DEPTH-`PLA_MAX_PRODUCTS+1), + .TABLE({EXTRA_VAR_TABLE[2*(WIDTH+1)*DEPTH-1:2*(WIDTH+1)*`PLA_MAX_PRODUCTS], {2'b10, {{WIDTH}{2'b00}}}}) + ) sop_rest ( + .A({partial, A}), + .Y(Y) + ); + end +endgenerate + +endmodule diff --git a/pre_techmap.json b/pre_techmap.json new file mode 100644 index 0000000..59efe97 --- /dev/null +++ b/pre_techmap.json @@ -0,0 +1,106 @@ +{ + "creator": "Yosys 0.37 (git sha1 a5c7f69ed8f, gcc 13.2.1 -march=x86-64 -mtune=generic -O2 -fno-plt -fexceptions -fstack-clash-protection -fcf-protection -ffile-prefix-map=/build/yosys/src=/usr/src/debug/yosys -fPIC -Os)", + "modules": { + "test": { + "attributes": { + "src": "test.v:13.1-20.10" + }, + "ports": { + "a": { + "direction": "input", + "bits": [ 2, 3 ] + }, + "b": { + "direction": "input", + "bits": [ 4, 5 ] + }, + "y": { + "direction": "output", + "bits": [ 6, 7, 8 ] + } + }, + "cells": { + "$abc$126$auto$blifparse.cc:509:parse_blif$127": { + "hide_name": 1, + "type": "$sop", + "parameters": { + "DEPTH": "00000000000000000000000000000011", + "TABLE": "101010001010001000001010", + "WIDTH": "00000000000000000000000000000100" + }, + "attributes": { + }, + "port_directions": { + "A": "input", + "Y": "output" + }, + "connections": { + "A": [ 3, 5, 2, 4 ], + "Y": [ 8 ] + } + }, + "$abc$126$auto$blifparse.cc:509:parse_blif$128": { + "hide_name": 1, + "type": "$sop", + "parameters": { + "DEPTH": "00000000000000000000000000000110", + "TABLE": "011001100110100110101010101001010001011000011001", + "WIDTH": "00000000000000000000000000000100" + }, + "attributes": { + }, + "port_directions": { + "A": "input", + "Y": "output" + }, + "connections": { + "A": [ 3, 5, 2, 4 ], + "Y": [ 7 ] + } + }, + "$abc$126$auto$blifparse.cc:509:parse_blif$129": { + "hide_name": 1, + "type": "$sop", + "parameters": { + "DEPTH": "00000000000000000000000000000010", + "TABLE": "01101001", + "WIDTH": "00000000000000000000000000000010" + }, + "attributes": { + }, + "port_directions": { + "A": "input", + "Y": "output" + }, + "connections": { + "A": [ 2, 4 ], + "Y": [ 6 ] + } + } + }, + "netnames": { + "a": { + "hide_name": 0, + "bits": [ 2, 3 ], + "attributes": { + "src": "test.v:14.14-14.15" + } + }, + "b": { + "hide_name": 0, + "bits": [ 4, 5 ], + "attributes": { + "src": "test.v:14.17-14.18" + } + }, + "y": { + "hide_name": 0, + "bits": [ 6, 7, 8 ], + "attributes": { + "src": "test.v:15.15-15.16" + } + } + } + } + } +} diff --git a/synth_gal.ys b/synth_gal.ys new file mode 100644 index 0000000..f3cbe63 --- /dev/null +++ b/synth_gal.ys @@ -0,0 +1,53 @@ +## Read Verilog +read_verilog test.v +hierarchy -auto-top + +## First pass synthesis +synth +design -save preop + +## DFF/SOP mapping +dfflibmap -liberty gal_dff.lib +abc -sop -I 8 -P 256 +opt +clean -purge + +## Tech mapping +techmap -map pla.v -D PLA_MAX_PRODUCTS=2 +extract -map macrocell.v -constports + +clean -purge + +## Write output files and graph +write_verilog test_synth.v +write_json test_synth.json +write_table test_synth.txt +write_blif test_synth.blif +write_rtlil test_synth.rtlil + +show -width -signed -enum + +## Verify equivalence +# Backup and make gold and gate modules +design -stash postop +design -copy-from preop -as gold A:top +design -copy-from postop -as gate A:top + +# Reverse tech map into primatives +#chtype -map GAL_SOP $sop gate +#chtype -map DFF_P $_DFF_P_ +techmap -map inv_techmap.v + +# Verify +equiv_make gold gate equiv +equiv_induct equiv +equiv_simple equiv + +# Restore backup +design -load postop + +## Print final stats +ltp -noff +stat + +shell diff --git a/test.v b/test.v new file mode 100644 index 0000000..790dd19 --- /dev/null +++ b/test.v @@ -0,0 +1,20 @@ +module test ( + input clk, + + output reg [0:7] counter +); + +always @ (posedge clk) begin + counter <= counter - 1; +end + +endmodule + +/*module test ( + input [1:0] a, b, + output [2:0] y +); + +assign y = a + b; + +endmodule*/ diff --git a/test.v.old b/test.v.old new file mode 100644 index 0000000..7a6759a --- /dev/null +++ b/test.v.old @@ -0,0 +1,96 @@ +`timescale 1ns / 1ns +`default_nettype none + +module scan_chain #( + parameter SCAN_CHAIN_DEPTH = 30 +) ( + input wire clk, + + input wire start, + output reg ready = 1, + + output reg scanout_clk = 0, + output reg sample_clk = 0, + output reg scan_chain_out_valid = 0, + output reg [SCAN_CHAIN_DEPTH_BITS-1:0] bit_addr = 0 +); + +localparam SCAN_CHAIN_DEPTH_BITS = $clog2(SCAN_CHAIN_DEPTH); + +localparam S_IDLE = 0; +localparam S_POS_SAMPLE = 1; +localparam S_NEG_SAMPLE = 2; +localparam S_POS_CLOCK = 3; +localparam S_READ_BIT = 4; +localparam S_NEG_CLOCK = 5; +reg [6:0] state = S_IDLE; + +// Adjust to slow down output/align it +localparam POS_SAMPLE_EXTRA_CLOCKS = 10; +localparam NEG_SAMPLE_EXTRA_CLOCKS = 10; +localparam POS_CLOCK_EXTRA_CLOCKS = 3; +localparam NEG_CLOCK_EXTRA_CLOCKS = 5; +reg [20:0] clk_count = 0; + +always @ (posedge clk) begin + if (start) begin + ready <= 0; + scanout_clk <= 0; + sample_clk <= 0; + bit_addr <= {SCAN_CHAIN_DEPTH_BITS{1'b1}}; + clk_count <= 0; + + state <= S_POS_SAMPLE; + end else begin + clk_count <= clk_count + 1; + case (state) + // Start sample + S_POS_SAMPLE : begin + sample_clk <= 1; + if (clk_count == POS_SAMPLE_EXTRA_CLOCKS) begin + clk_count <= 0; + state <= S_NEG_SAMPLE; + end + end + // Wait until reading data + S_NEG_SAMPLE : begin + sample_clk <= 0; + if (clk_count == NEG_SAMPLE_EXTRA_CLOCKS) begin + clk_count <= 0; + state <= S_READ_BIT; // First bit is unclocked + end + end + + /* Loop over SCAN_CHAIN_DEPTH number of bits */ + // Rising edge of clock + S_POS_CLOCK : begin + scanout_clk <= 1; + if (clk_count == POS_CLOCK_EXTRA_CLOCKS) begin + clk_count <= 0; + state <= S_READ_BIT; + end + end + // Read bit from scanchain + S_READ_BIT : begin + scan_chain_out_valid <= 1; + bit_addr <= bit_addr + 1; + state <= S_NEG_CLOCK; + end + // Falling edge of clock + S_NEG_CLOCK : begin + scan_chain_out_valid <= 0; + scanout_clk <= 0; + + if (bit_addr == SCAN_CHAIN_DEPTH - 1) begin + ready <= 1; + state <= S_IDLE; + end else if (clk_count == NEG_CLOCK_EXTRA_CLOCKS) begin + clk_count <= 0; + state <= S_POS_CLOCK; + end + end + endcase + end +end + +endmodule diff --git a/test_synth.blif b/test_synth.blif new file mode 100644 index 0000000..ec15223 --- /dev/null +++ b/test_synth.blif @@ -0,0 +1,47 @@ +# Generated by Yosys 0.37 (git sha1 a5c7f69ed8f, gcc 13.2.1 -march=x86-64 -mtune=generic -O2 -fno-plt -fexceptions -fstack-clash-protection -fcf-protection -ffile-prefix-map=/build/yosys/src=/usr/src/debug/yosys -fPIC -Os) + +.model test +.inputs clk +.outputs counter[7] counter[6] counter[5] counter[4] counter[3] counter[2] counter[1] counter[0] +.names $false +.names $true +1 +.names $undef +.subckt GAL_SOP A[0]=counter[6] A[1]=counter[7] A[2]=counter[5] A[3]=counter[4] Y=$abc$241$auto$blifparse.cc:509:parse_blif$242.genblk1.partial +.subckt GAL_SOP A[0]=counter[6] A[1]=counter[7] A[2]=counter[5] A[3]=counter[4] A[4]=$abc$241$auto$blifparse.cc:509:parse_blif$242.genblk1.partial Y=$abc$241$auto$blifparse.cc:509:parse_blif$242.genblk1.sop_rest.genblk1.partial +.subckt GAL_SOP A[0]=counter[6] A[1]=counter[7] A[2]=counter[5] A[3]=counter[4] A[4]=$abc$241$auto$blifparse.cc:509:parse_blif$242.genblk1.partial A[5]=$abc$241$auto$blifparse.cc:509:parse_blif$242.genblk1.sop_rest.genblk1.partial Y=$abc$241$auto$blifparse.cc:576:parse_blif$243 +.subckt GAL_SOP A[0]=counter[6] A[1]=counter[7] A[2]=counter[5] A[3]=counter[4] A[4]=counter[3] Y=$abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.partial +.subckt GAL_SOP A[0]=counter[6] A[1]=counter[7] A[2]=counter[5] A[3]=counter[4] A[4]=counter[3] A[5]=$abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.partial Y=$abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.sop_rest.genblk1.partial +.subckt GAL_SOP A[0]=counter[6] A[1]=counter[7] A[2]=counter[5] A[3]=counter[4] A[4]=counter[3] A[5]=$abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.partial A[6]=$abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.sop_rest.genblk1.partial Y=$abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial +.subckt GAL_SOP A[0]=counter[6] A[1]=counter[7] A[2]=counter[5] A[3]=counter[4] A[4]=counter[3] A[5]=$abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.partial A[6]=$abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.sop_rest.genblk1.partial A[7]=$abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial Y=$abc$241$auto$blifparse.cc:576:parse_blif$246 +.subckt GAL_SOP A[0]=counter[6] A[1]=counter[7] A[2]=counter[5] A[3]=counter[4] A[4]=counter[3] A[5]=counter[2] Y=$abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.partial +.subckt GAL_SOP A[0]=counter[6] A[1]=counter[7] A[2]=counter[5] A[3]=counter[4] A[4]=counter[3] A[5]=counter[2] A[6]=$abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.partial Y=$abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.partial +.subckt GAL_SOP A[0]=counter[6] A[1]=counter[7] A[2]=counter[5] A[3]=counter[4] A[4]=counter[3] A[5]=counter[2] A[6]=$abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.partial A[7]=$abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.partial Y=$abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial +.subckt GAL_SOP A[0]=counter[6] A[1]=counter[7] A[2]=counter[5] A[3]=counter[4] A[4]=counter[3] A[5]=counter[2] A[6]=$abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.partial A[7]=$abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.partial A[8]=$abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial Y=$abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial +.subckt GAL_SOP A[0]=counter[6] A[1]=counter[7] A[2]=counter[5] A[3]=counter[4] A[4]=counter[3] A[5]=counter[2] A[6]=$abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.partial A[7]=$abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.partial A[8]=$abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial A[9]=$abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial Y=$abc$241$auto$blifparse.cc:576:parse_blif$249 +.subckt GAL_SOP A[0]=counter[6] A[1]=counter[7] A[2]=counter[5] A[3]=counter[4] A[4]=counter[3] A[5]=counter[2] A[6]=counter[1] Y=$abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.partial +.subckt GAL_SOP A[0]=counter[6] A[1]=counter[7] A[2]=counter[5] A[3]=counter[4] A[4]=counter[3] A[5]=counter[2] A[6]=counter[1] A[7]=$abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.partial Y=$abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.partial +.subckt GAL_SOP A[0]=counter[6] A[1]=counter[7] A[2]=counter[5] A[3]=counter[4] A[4]=counter[3] A[5]=counter[2] A[6]=counter[1] A[7]=$abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.partial A[8]=$abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.partial Y=$abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial +.subckt GAL_SOP A[0]=counter[6] A[1]=counter[7] A[2]=counter[5] A[3]=counter[4] A[4]=counter[3] A[5]=counter[2] A[6]=counter[1] A[7]=$abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.partial A[8]=$abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.partial A[9]=$abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial Y=$abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial +.subckt GAL_SOP A[0]=counter[6] A[1]=counter[7] A[2]=counter[5] A[3]=counter[4] A[4]=counter[3] A[5]=counter[2] A[6]=counter[1] A[7]=$abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.partial A[8]=$abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.partial A[9]=$abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial A[10]=$abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial Y=$abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial +.subckt GAL_SOP A[0]=counter[6] A[1]=counter[7] A[2]=counter[5] A[3]=counter[4] A[4]=counter[3] A[5]=counter[2] A[6]=counter[1] A[7]=$abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.partial A[8]=$abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.partial A[9]=$abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial A[10]=$abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial A[11]=$abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial Y=$abc$241$auto$blifparse.cc:576:parse_blif$252 +.subckt GAL_SOP A[0]=counter[6] A[1]=counter[7] A[2]=counter[5] A[3]=counter[4] A[4]=counter[3] A[5]=counter[2] A[6]=counter[1] A[7]=counter[0] Y=$abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.partial +.subckt GAL_SOP A[0]=counter[6] A[1]=counter[7] A[2]=counter[5] A[3]=counter[4] A[4]=counter[3] A[5]=counter[2] A[6]=counter[1] A[7]=counter[0] A[8]=$abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.partial Y=$abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.partial +.subckt GAL_SOP A[0]=counter[6] A[1]=counter[7] A[2]=counter[5] A[3]=counter[4] A[4]=counter[3] A[5]=counter[2] A[6]=counter[1] A[7]=counter[0] A[8]=$abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.partial A[9]=$abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.partial Y=$abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial +.subckt GAL_SOP A[0]=counter[6] A[1]=counter[7] A[2]=counter[5] A[3]=counter[4] A[4]=counter[3] A[5]=counter[2] A[6]=counter[1] A[7]=counter[0] A[8]=$abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.partial A[9]=$abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.partial A[10]=$abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial Y=$abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial +.subckt GAL_SOP A[0]=counter[6] A[1]=counter[7] A[2]=counter[5] A[3]=counter[4] A[4]=counter[3] A[5]=counter[2] A[6]=counter[1] A[7]=counter[0] A[8]=$abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.partial A[9]=$abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.partial A[10]=$abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial A[11]=$abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial Y=$abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial +.subckt GAL_SOP A[0]=counter[6] A[1]=counter[7] A[2]=counter[5] A[3]=counter[4] A[4]=counter[3] A[5]=counter[2] A[6]=counter[1] A[7]=counter[0] A[8]=$abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.partial A[9]=$abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.partial A[10]=$abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial A[11]=$abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial A[12]=$abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial Y=$abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial +.subckt GAL_SOP A[0]=counter[6] A[1]=counter[7] A[2]=counter[5] A[3]=counter[4] A[4]=counter[3] A[5]=counter[2] A[6]=counter[1] A[7]=counter[0] A[8]=$abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.partial A[9]=$abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.partial A[10]=$abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial A[11]=$abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial A[12]=$abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial A[13]=$abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial Y=$abc$241$auto$blifparse.cc:576:parse_blif$255 +.subckt GAL_SOP A[0]=counter[6] A[1]=counter[7] Y=$abc$241$auto$blifparse.cc:576:parse_blif$258 +.subckt GAL_SOP A[0]=counter[6] A[1]=counter[7] A[2]=counter[5] Y=$abc$241$auto$blifparse.cc:509:parse_blif$260.genblk1.partial +.subckt GAL_SOP A[0]=counter[6] A[1]=counter[7] A[2]=counter[5] A[3]=$abc$241$auto$blifparse.cc:509:parse_blif$260.genblk1.partial Y=$abc$241$auto$blifparse.cc:576:parse_blif$261 +.subckt GAL_SOP A=counter[7] Y=$auto$alumacc.cc:485:replace_alu$4.Y[0] +.subckt DFF_P C=clk D=$auto$alumacc.cc:485:replace_alu$4.Y[0] Q=counter[7] +.subckt NDFF_P C=clk D=$abc$241$auto$blifparse.cc:576:parse_blif$258 Q=counter[6] +.subckt NDFF_P C=clk D=$abc$241$auto$blifparse.cc:576:parse_blif$261 Q=counter[5] +.subckt NDFF_P C=clk D=$abc$241$auto$blifparse.cc:576:parse_blif$243 Q=counter[4] +.subckt NDFF_P C=clk D=$abc$241$auto$blifparse.cc:576:parse_blif$246 Q=counter[3] +.subckt NDFF_P C=clk D=$abc$241$auto$blifparse.cc:576:parse_blif$249 Q=counter[2] +.subckt NDFF_P C=clk D=$abc$241$auto$blifparse.cc:576:parse_blif$252 Q=counter[1] +.subckt NDFF_P C=clk D=$abc$241$auto$blifparse.cc:576:parse_blif$255 Q=counter[0] +.end diff --git a/test_synth.json b/test_synth.json new file mode 100644 index 0000000..9996fb8 --- /dev/null +++ b/test_synth.json @@ -0,0 +1,837 @@ +{ + "creator": "Yosys 0.37 (git sha1 a5c7f69ed8f, gcc 13.2.1 -march=x86-64 -mtune=generic -O2 -fno-plt -fexceptions -fstack-clash-protection -fcf-protection -ffile-prefix-map=/build/yosys/src=/usr/src/debug/yosys -fPIC -Os)", + "modules": { + "test": { + "attributes": { + "top": "00000000000000000000000000000001", + "src": "test.v:1.1-11.10" + }, + "ports": { + "clk": { + "direction": "input", + "bits": [ 2 ] + }, + "counter": { + "direction": "output", + "upto": 1, + "bits": [ 3, 4, 5, 6, 7, 8, 9, 10 ] + } + }, + "cells": { + "$abc$241$auto$blifparse.cc:509:parse_blif$242.genblk1.sop_partial": { + "hide_name": 1, + "type": "GAL_SOP", + "parameters": { + "DEPTH": "00000000000000000000000000000010", + "TABLE": "0110000101000010", + "WIDTH": "00000000000000000000000000000100" + }, + "attributes": { + "module_not_derived": "00000000000000000000000000000001", + "src": "pla.v:48.5-51.4|pla.v:38.3-41.4" + }, + "connections": { + "A": [ 4, 3, 5, 6 ], + "Y": [ 11 ] + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$242.genblk1.sop_rest.genblk1.sop_partial": { + "hide_name": 1, + "type": "GAL_SOP", + "parameters": { + "DEPTH": "00000000000000000000000000000010", + "TABLE": "00100101011000000000", + "WIDTH": "00000000000000000000000000000101" + }, + "attributes": { + "module_not_derived": "00000000000000000000000000000001", + "src": "pla.v:58.5-61.4|pla.v:48.5-51.4|pla.v:38.3-41.4" + }, + "connections": { + "A": [ 4, 3, 5, 6, 11 ], + "Y": [ 12 ] + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$242.genblk1.sop_rest.genblk1.sop_rest": { + "hide_name": 1, + "type": "GAL_SOP", + "parameters": { + "DEPTH": "00000000000000000000000000000010", + "TABLE": "000001011001100000000000", + "WIDTH": "00000000000000000000000000000110" + }, + "attributes": { + "module_not_derived": "00000000000000000000000000000001", + "src": "pla.v:58.5-61.4|pla.v:38.3-41.4" + }, + "connections": { + "A": [ 4, 3, 5, 6, 11, 12 ], + "Y": [ 13 ] + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.sop_partial": { + "hide_name": 1, + "type": "GAL_SOP", + "parameters": { + "DEPTH": "00000000000000000000000000000010", + "TABLE": "01100100000100100000", + "WIDTH": "00000000000000000000000000000101" + }, + "attributes": { + "module_not_derived": "00000000000000000000000000000001", + "src": "pla.v:48.5-51.4|pla.v:38.3-41.4" + }, + "connections": { + "A": [ 4, 3, 5, 6, 7 ], + "Y": [ 14 ] + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.sop_rest.genblk1.sop_partial": { + "hide_name": 1, + "type": "GAL_SOP", + "parameters": { + "DEPTH": "00000000000000000000000000000010", + "TABLE": "000100001001100000000000", + "WIDTH": "00000000000000000000000000000110" + }, + "attributes": { + "module_not_derived": "00000000000000000000000000000001", + "src": "pla.v:58.5-61.4|pla.v:48.5-51.4|pla.v:38.3-41.4" + }, + "connections": { + "A": [ 4, 3, 5, 6, 7, 14 ], + "Y": [ 15 ] + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_partial": { + "hide_name": 1, + "type": "GAL_SOP", + "parameters": { + "DEPTH": "00000000000000000000000000000010", + "TABLE": "0000010101001010000000000000", + "WIDTH": "00000000000000000000000000000111" + }, + "attributes": { + "module_not_derived": "00000000000000000000000000000001", + "src": "pla.v:58.5-61.4|pla.v:48.5-51.4|pla.v:38.3-41.4" + }, + "connections": { + "A": [ 4, 3, 5, 6, 7, 14, 15 ], + "Y": [ 16 ] + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest": { + "hide_name": 1, + "type": "GAL_SOP", + "parameters": { + "DEPTH": "00000000000000000000000000000010", + "TABLE": "00000010010101011000000000000000", + "WIDTH": "00000000000000000000000000001000" + }, + "attributes": { + "module_not_derived": "00000000000000000000000000000001", + "src": "pla.v:58.5-61.4|pla.v:38.3-41.4" + }, + "connections": { + "A": [ 4, 3, 5, 6, 7, 14, 15, 16 ], + "Y": [ 17 ] + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_partial": { + "hide_name": 1, + "type": "GAL_SOP", + "parameters": { + "DEPTH": "00000000000000000000000000000010", + "TABLE": "011001000000010010000000", + "WIDTH": "00000000000000000000000000000110" + }, + "attributes": { + "module_not_derived": "00000000000000000000000000000001", + "src": "pla.v:48.5-51.4|pla.v:38.3-41.4" + }, + "connections": { + "A": [ 4, 3, 5, 6, 7, 8 ], + "Y": [ 18 ] + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.sop_partial": { + "hide_name": 1, + "type": "GAL_SOP", + "parameters": { + "DEPTH": "00000000000000000000000000000010", + "TABLE": "0001000000100110000000000000", + "WIDTH": "00000000000000000000000000000111" + }, + "attributes": { + "module_not_derived": "00000000000000000000000000000001", + "src": "pla.v:58.5-61.4|pla.v:48.5-51.4|pla.v:38.3-41.4" + }, + "connections": { + "A": [ 4, 3, 5, 6, 7, 8, 18 ], + "Y": [ 19 ] + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_partial": { + "hide_name": 1, + "type": "GAL_SOP", + "parameters": { + "DEPTH": "00000000000000000000000000000010", + "TABLE": "00000100000100101000000000000000", + "WIDTH": "00000000000000000000000000001000" + }, + "attributes": { + "module_not_derived": "00000000000000000000000000000001", + "src": "pla.v:58.5-61.4|pla.v:48.5-51.4|pla.v:38.3-41.4" + }, + "connections": { + "A": [ 4, 3, 5, 6, 7, 8, 18, 19 ], + "Y": [ 20 ] + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_partial": { + "hide_name": 1, + "type": "GAL_SOP", + "parameters": { + "DEPTH": "00000000000000000000000000000010", + "TABLE": "000000010101100000100000000000000000", + "WIDTH": "00000000000000000000000000001001" + }, + "attributes": { + "module_not_derived": "00000000000000000000000000000001", + "src": "pla.v:58.5-61.4|pla.v:48.5-51.4|pla.v:38.3-41.4" + }, + "connections": { + "A": [ 4, 3, 5, 6, 7, 8, 18, 19, 20 ], + "Y": [ 21 ] + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest": { + "hide_name": 1, + "type": "GAL_SOP", + "parameters": { + "DEPTH": "00000000000000000000000000000010", + "TABLE": "0000000010010101010110000000000000000000", + "WIDTH": "00000000000000000000000000001010" + }, + "attributes": { + "module_not_derived": "00000000000000000000000000000001", + "src": "pla.v:58.5-61.4|pla.v:38.3-41.4" + }, + "connections": { + "A": [ 4, 3, 5, 6, 7, 8, 18, 19, 20, 21 ], + "Y": [ 22 ] + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_partial": { + "hide_name": 1, + "type": "GAL_SOP", + "parameters": { + "DEPTH": "00000000000000000000000000000010", + "TABLE": "0110010000000001001000000000", + "WIDTH": "00000000000000000000000000000111" + }, + "attributes": { + "module_not_derived": "00000000000000000000000000000001", + "src": "pla.v:48.5-51.4|pla.v:38.3-41.4" + }, + "connections": { + "A": [ 4, 3, 5, 6, 7, 8, 9 ], + "Y": [ 23 ] + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_partial": { + "hide_name": 1, + "type": "GAL_SOP", + "parameters": { + "DEPTH": "00000000000000000000000000000010", + "TABLE": "00010000000100101000000000000000", + "WIDTH": "00000000000000000000000000001000" + }, + "attributes": { + "module_not_derived": "00000000000000000000000000000001", + "src": "pla.v:58.5-61.4|pla.v:48.5-51.4|pla.v:38.3-41.4" + }, + "connections": { + "A": [ 4, 3, 5, 6, 7, 8, 9, 23 ], + "Y": [ 24 ] + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_partial": { + "hide_name": 1, + "type": "GAL_SOP", + "parameters": { + "DEPTH": "00000000000000000000000000000010", + "TABLE": "000001000000001001100000000000000000", + "WIDTH": "00000000000000000000000000001001" + }, + "attributes": { + "module_not_derived": "00000000000000000000000000000001", + "src": "pla.v:58.5-61.4|pla.v:48.5-51.4|pla.v:38.3-41.4" + }, + "connections": { + "A": [ 4, 3, 5, 6, 7, 8, 9, 23, 24 ], + "Y": [ 25 ] + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_partial": { + "hide_name": 1, + "type": "GAL_SOP", + "parameters": { + "DEPTH": "00000000000000000000000000000010", + "TABLE": "0000000100000110000010000000000000000000", + "WIDTH": "00000000000000000000000000001010" + }, + "attributes": { + "module_not_derived": "00000000000000000000000000000001", + "src": "pla.v:58.5-61.4|pla.v:48.5-51.4|pla.v:38.3-41.4" + }, + "connections": { + "A": [ 4, 3, 5, 6, 7, 8, 9, 23, 24, 25 ], + "Y": [ 26 ] + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_partial": { + "hide_name": 1, + "type": "GAL_SOP", + "parameters": { + "DEPTH": "00000000000000000000000000000010", + "TABLE": "00000000010101100000001000000000000000000000", + "WIDTH": "00000000000000000000000000001011" + }, + "attributes": { + "module_not_derived": "00000000000000000000000000000001", + "src": "pla.v:58.5-61.4|pla.v:48.5-51.4|pla.v:38.3-41.4" + }, + "connections": { + "A": [ 4, 3, 5, 6, 7, 8, 9, 23, 24, 25, 26 ], + "Y": [ 27 ] + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest": { + "hide_name": 1, + "type": "GAL_SOP", + "parameters": { + "DEPTH": "00000000000000000000000000000010", + "TABLE": "000000000010010101010101100000000000000000000000", + "WIDTH": "00000000000000000000000000001100" + }, + "attributes": { + "module_not_derived": "00000000000000000000000000000001", + "src": "pla.v:58.5-61.4|pla.v:38.3-41.4" + }, + "connections": { + "A": [ 4, 3, 5, 6, 7, 8, 9, 23, 24, 25, 26, 27 ], + "Y": [ 28 ] + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_partial": { + "hide_name": 1, + "type": "GAL_SOP", + "parameters": { + "DEPTH": "00000000000000000000000000000010", + "TABLE": "01100100000000000100100000000000", + "WIDTH": "00000000000000000000000000001000" + }, + "attributes": { + "module_not_derived": "00000000000000000000000000000001", + "src": "pla.v:48.5-51.4|pla.v:38.3-41.4" + }, + "connections": { + "A": [ 4, 3, 5, 6, 7, 8, 9, 10 ], + "Y": [ 29 ] + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_partial": { + "hide_name": 1, + "type": "GAL_SOP", + "parameters": { + "DEPTH": "00000000000000000000000000000010", + "TABLE": "000100000001100000100000000000000000", + "WIDTH": "00000000000000000000000000001001" + }, + "attributes": { + "module_not_derived": "00000000000000000000000000000001", + "src": "pla.v:58.5-61.4|pla.v:48.5-51.4|pla.v:38.3-41.4" + }, + "connections": { + "A": [ 4, 3, 5, 6, 7, 8, 9, 10, 29 ], + "Y": [ 30 ] + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_partial": { + "hide_name": 1, + "type": "GAL_SOP", + "parameters": { + "DEPTH": "00000000000000000000000000000010", + "TABLE": "0000010000000000100110000000000000000000", + "WIDTH": "00000000000000000000000000001010" + }, + "attributes": { + "module_not_derived": "00000000000000000000000000000001", + "src": "pla.v:58.5-61.4|pla.v:48.5-51.4|pla.v:38.3-41.4" + }, + "connections": { + "A": [ 4, 3, 5, 6, 7, 8, 9, 10, 29, 30 ], + "Y": [ 31 ] + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_partial": { + "hide_name": 1, + "type": "GAL_SOP", + "parameters": { + "DEPTH": "00000000000000000000000000000010", + "TABLE": "00000001000000000100101000000000000000000000", + "WIDTH": "00000000000000000000000000001011" + }, + "attributes": { + "module_not_derived": "00000000000000000000000000000001", + "src": "pla.v:58.5-61.4|pla.v:48.5-51.4|pla.v:38.3-41.4" + }, + "connections": { + "A": [ 4, 3, 5, 6, 7, 8, 9, 10, 29, 30, 31 ], + "Y": [ 32 ] + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_partial": { + "hide_name": 1, + "type": "GAL_SOP", + "parameters": { + "DEPTH": "00000000000000000000000000000010", + "TABLE": "000000000100000110000000100000000000000000000000", + "WIDTH": "00000000000000000000000000001100" + }, + "attributes": { + "module_not_derived": "00000000000000000000000000000001", + "src": "pla.v:58.5-61.4|pla.v:48.5-51.4|pla.v:38.3-41.4" + }, + "connections": { + "A": [ 4, 3, 5, 6, 7, 8, 9, 10, 29, 30, 31, 32 ], + "Y": [ 33 ] + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_partial": { + "hide_name": 1, + "type": "GAL_SOP", + "parameters": { + "DEPTH": "00000000000000000000000000000010", + "TABLE": "0000000000010101100000000010000000000000000000000000", + "WIDTH": "00000000000000000000000000001101" + }, + "attributes": { + "module_not_derived": "00000000000000000000000000000001", + "src": "pla.v:58.5-61.4|pla.v:48.5-51.4|pla.v:38.3-41.4" + }, + "connections": { + "A": [ 4, 3, 5, 6, 7, 8, 9, 10, 29, 30, 31, 32, 33 ], + "Y": [ 34 ] + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest": { + "hide_name": 1, + "type": "GAL_SOP", + "parameters": { + "DEPTH": "00000000000000000000000000000010", + "TABLE": "00000000000010010101010101011000000000000000000000000000", + "WIDTH": "00000000000000000000000000001110" + }, + "attributes": { + "module_not_derived": "00000000000000000000000000000001", + "src": "pla.v:58.5-61.4|pla.v:38.3-41.4" + }, + "connections": { + "A": [ 4, 3, 5, 6, 7, 8, 9, 10, 29, 30, 31, 32, 33, 34 ], + "Y": [ 35 ] + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$257": { + "hide_name": 1, + "type": "GAL_SOP", + "parameters": { + "DEPTH": "00000000000000000000000000000010", + "TABLE": "10010110", + "WIDTH": "00000000000000000000000000000010" + }, + "attributes": { + "module_not_derived": "00000000000000000000000000000001", + "src": "pla.v:38.3-41.4" + }, + "connections": { + "A": [ 4, 3 ], + "Y": [ 36 ] + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$260.genblk1.sop_partial": { + "hide_name": 1, + "type": "GAL_SOP", + "parameters": { + "DEPTH": "00000000000000000000000000000010", + "TABLE": "100101011000", + "WIDTH": "00000000000000000000000000000011" + }, + "attributes": { + "module_not_derived": "00000000000000000000000000000001", + "src": "pla.v:48.5-51.4|pla.v:38.3-41.4" + }, + "connections": { + "A": [ 4, 3, 5 ], + "Y": [ 37 ] + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$260.genblk1.sop_rest": { + "hide_name": 1, + "type": "GAL_SOP", + "parameters": { + "DEPTH": "00000000000000000000000000000010", + "TABLE": "0001011010000000", + "WIDTH": "00000000000000000000000000000100" + }, + "attributes": { + "module_not_derived": "00000000000000000000000000000001", + "src": "pla.v:58.5-61.4|pla.v:38.3-41.4" + }, + "connections": { + "A": [ 4, 3, 5, 37 ], + "Y": [ 38 ] + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$263": { + "hide_name": 1, + "type": "GAL_SOP", + "parameters": { + "DEPTH": "00000000000000000000000000000001", + "TABLE": "01", + "WIDTH": "00000000000000000000000000000001" + }, + "attributes": { + "module_not_derived": "00000000000000000000000000000001", + "src": "pla.v:38.3-41.4" + }, + "connections": { + "A": [ 3 ], + "Y": [ 39 ] + } + }, + "$auto$ff.cc:266:slice$89": { + "hide_name": 1, + "type": "DFF_P", + "parameters": { + }, + "attributes": { + "src": "test.v:7.1-9.4" + }, + "connections": { + "C": [ 2 ], + "D": [ 39 ], + "Q": [ 3 ] + } + }, + "$extract$\\NDFF_P$316": { + "hide_name": 1, + "type": "NDFF_P", + "parameters": { + }, + "attributes": { + }, + "connections": { + "C": [ 2 ], + "D": [ 36 ], + "Q": [ 4 ] + } + }, + "$extract$\\NDFF_P$317": { + "hide_name": 1, + "type": "NDFF_P", + "parameters": { + }, + "attributes": { + }, + "connections": { + "C": [ 2 ], + "D": [ 38 ], + "Q": [ 5 ] + } + }, + "$extract$\\NDFF_P$318": { + "hide_name": 1, + "type": "NDFF_P", + "parameters": { + }, + "attributes": { + }, + "connections": { + "C": [ 2 ], + "D": [ 13 ], + "Q": [ 6 ] + } + }, + "$extract$\\NDFF_P$319": { + "hide_name": 1, + "type": "NDFF_P", + "parameters": { + }, + "attributes": { + }, + "connections": { + "C": [ 2 ], + "D": [ 17 ], + "Q": [ 7 ] + } + }, + "$extract$\\NDFF_P$320": { + "hide_name": 1, + "type": "NDFF_P", + "parameters": { + }, + "attributes": { + }, + "connections": { + "C": [ 2 ], + "D": [ 22 ], + "Q": [ 8 ] + } + }, + "$extract$\\NDFF_P$321": { + "hide_name": 1, + "type": "NDFF_P", + "parameters": { + }, + "attributes": { + }, + "connections": { + "C": [ 2 ], + "D": [ 28 ], + "Q": [ 9 ] + } + }, + "$extract$\\NDFF_P$322": { + "hide_name": 1, + "type": "NDFF_P", + "parameters": { + }, + "attributes": { + }, + "connections": { + "C": [ 2 ], + "D": [ 35 ], + "Q": [ 10 ] + } + } + }, + "netnames": { + "$abc$241$auto$blifparse.cc:509:parse_blif$242.genblk1.partial": { + "hide_name": 1, + "bits": [ 11 ], + "attributes": { + "src": "pla.v:43.8-43.15" + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$242.genblk1.sop_rest.genblk1.partial": { + "hide_name": 1, + "bits": [ 12 ], + "attributes": { + "src": "pla.v:58.5-61.4|pla.v:43.8-43.15" + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.partial": { + "hide_name": 1, + "bits": [ 14 ], + "attributes": { + "src": "pla.v:43.8-43.15" + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.sop_rest.genblk1.partial": { + "hide_name": 1, + "bits": [ 15 ], + "attributes": { + "src": "pla.v:58.5-61.4|pla.v:43.8-43.15" + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial": { + "hide_name": 1, + "bits": [ 16 ], + "attributes": { + "src": "pla.v:58.5-61.4|pla.v:43.8-43.15" + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.partial": { + "hide_name": 1, + "bits": [ 18 ], + "attributes": { + "src": "pla.v:43.8-43.15" + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.partial": { + "hide_name": 1, + "bits": [ 19 ], + "attributes": { + "src": "pla.v:58.5-61.4|pla.v:43.8-43.15" + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial": { + "hide_name": 1, + "bits": [ 20 ], + "attributes": { + "src": "pla.v:58.5-61.4|pla.v:43.8-43.15" + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial": { + "hide_name": 1, + "bits": [ 21 ], + "attributes": { + "src": "pla.v:58.5-61.4|pla.v:43.8-43.15" + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.partial": { + "hide_name": 1, + "bits": [ 23 ], + "attributes": { + "src": "pla.v:43.8-43.15" + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.partial": { + "hide_name": 1, + "bits": [ 24 ], + "attributes": { + "src": "pla.v:58.5-61.4|pla.v:43.8-43.15" + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial": { + "hide_name": 1, + "bits": [ 25 ], + "attributes": { + "src": "pla.v:58.5-61.4|pla.v:43.8-43.15" + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial": { + "hide_name": 1, + "bits": [ 26 ], + "attributes": { + "src": "pla.v:58.5-61.4|pla.v:43.8-43.15" + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial": { + "hide_name": 1, + "bits": [ 27 ], + "attributes": { + "src": "pla.v:58.5-61.4|pla.v:43.8-43.15" + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.partial": { + "hide_name": 1, + "bits": [ 29 ], + "attributes": { + "src": "pla.v:43.8-43.15" + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.partial": { + "hide_name": 1, + "bits": [ 30 ], + "attributes": { + "src": "pla.v:58.5-61.4|pla.v:43.8-43.15" + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial": { + "hide_name": 1, + "bits": [ 31 ], + "attributes": { + "src": "pla.v:58.5-61.4|pla.v:43.8-43.15" + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial": { + "hide_name": 1, + "bits": [ 32 ], + "attributes": { + "src": "pla.v:58.5-61.4|pla.v:43.8-43.15" + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial": { + "hide_name": 1, + "bits": [ 33 ], + "attributes": { + "src": "pla.v:58.5-61.4|pla.v:43.8-43.15" + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial": { + "hide_name": 1, + "bits": [ 34 ], + "attributes": { + "src": "pla.v:58.5-61.4|pla.v:43.8-43.15" + } + }, + "$abc$241$auto$blifparse.cc:509:parse_blif$260.genblk1.partial": { + "hide_name": 1, + "bits": [ 37 ], + "attributes": { + "src": "pla.v:43.8-43.15" + } + }, + "$abc$241$auto$blifparse.cc:576:parse_blif$243": { + "hide_name": 1, + "bits": [ 13 ], + "attributes": { + } + }, + "$abc$241$auto$blifparse.cc:576:parse_blif$246": { + "hide_name": 1, + "bits": [ 17 ], + "attributes": { + } + }, + "$abc$241$auto$blifparse.cc:576:parse_blif$249": { + "hide_name": 1, + "bits": [ 22 ], + "attributes": { + } + }, + "$abc$241$auto$blifparse.cc:576:parse_blif$252": { + "hide_name": 1, + "bits": [ 28 ], + "attributes": { + } + }, + "$abc$241$auto$blifparse.cc:576:parse_blif$255": { + "hide_name": 1, + "bits": [ 35 ], + "attributes": { + } + }, + "$abc$241$auto$blifparse.cc:576:parse_blif$258": { + "hide_name": 1, + "bits": [ 36 ], + "attributes": { + } + }, + "$abc$241$auto$blifparse.cc:576:parse_blif$261": { + "hide_name": 1, + "bits": [ 38 ], + "attributes": { + } + }, + "$auto$alumacc.cc:485:replace_alu$4.Y": { + "hide_name": 1, + "bits": [ 39, 40, 41, 42, 43, 44, 45, 46 ], + "attributes": { + "force_downto": "00000000000000000000000000000001", + "src": "test.v:8.13-8.24|/usr/bin/../share/yosys/techmap.v:270.26-270.27", + "unused_bits": "1 2 3 4 5 6 7" + } + }, + "clk": { + "hide_name": 0, + "bits": [ 2 ], + "attributes": { + "src": "test.v:2.8-2.11" + } + }, + "counter": { + "hide_name": 0, + "bits": [ 3, 4, 5, 6, 7, 8, 9, 10 ], + "upto": 1, + "attributes": { + "src": "test.v:4.19-4.26" + } + } + } + } + } +} diff --git a/test_synth.rtlil b/test_synth.rtlil new file mode 100644 index 0000000..b13cfa5 --- /dev/null +++ b/test_synth.rtlil @@ -0,0 +1,365 @@ +# Generated by Yosys 0.37 (git sha1 a5c7f69ed8f, gcc 13.2.1 -march=x86-64 -mtune=generic -O2 -fno-plt -fexceptions -fstack-clash-protection -fcf-protection -ffile-prefix-map=/build/yosys/src=/usr/src/debug/yosys -fPIC -Os) +autoidx 323 +attribute \top 1 +attribute \src "test.v:1.1-11.10" +module \test + attribute \src "pla.v:43.8-43.15" + wire $abc$241$auto$blifparse.cc:509:parse_blif$242.genblk1.partial + attribute \src "pla.v:58.5-61.4|pla.v:43.8-43.15" + wire $abc$241$auto$blifparse.cc:509:parse_blif$242.genblk1.sop_rest.genblk1.partial + attribute \src "pla.v:43.8-43.15" + wire $abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.partial + attribute \src "pla.v:58.5-61.4|pla.v:43.8-43.15" + wire $abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.sop_rest.genblk1.partial + attribute \src "pla.v:58.5-61.4|pla.v:43.8-43.15" + wire $abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial + attribute \src "pla.v:43.8-43.15" + wire $abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.partial + attribute \src "pla.v:58.5-61.4|pla.v:43.8-43.15" + wire $abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.partial + attribute \src "pla.v:58.5-61.4|pla.v:43.8-43.15" + wire $abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial + attribute \src "pla.v:58.5-61.4|pla.v:43.8-43.15" + wire $abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial + attribute \src "pla.v:43.8-43.15" + wire $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.partial + attribute \src "pla.v:58.5-61.4|pla.v:43.8-43.15" + wire $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.partial + attribute \src "pla.v:58.5-61.4|pla.v:43.8-43.15" + wire $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial + attribute \src "pla.v:58.5-61.4|pla.v:43.8-43.15" + wire $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial + attribute \src "pla.v:58.5-61.4|pla.v:43.8-43.15" + wire $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial + attribute \src "pla.v:43.8-43.15" + wire $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.partial + attribute \src "pla.v:58.5-61.4|pla.v:43.8-43.15" + wire $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.partial + attribute \src "pla.v:58.5-61.4|pla.v:43.8-43.15" + wire $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial + attribute \src "pla.v:58.5-61.4|pla.v:43.8-43.15" + wire $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial + attribute \src "pla.v:58.5-61.4|pla.v:43.8-43.15" + wire $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial + attribute \src "pla.v:58.5-61.4|pla.v:43.8-43.15" + wire $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial + attribute \src "pla.v:43.8-43.15" + wire $abc$241$auto$blifparse.cc:509:parse_blif$260.genblk1.partial + wire $abc$241$auto$blifparse.cc:576:parse_blif$243 + wire $abc$241$auto$blifparse.cc:576:parse_blif$246 + wire $abc$241$auto$blifparse.cc:576:parse_blif$249 + wire $abc$241$auto$blifparse.cc:576:parse_blif$252 + wire $abc$241$auto$blifparse.cc:576:parse_blif$255 + wire $abc$241$auto$blifparse.cc:576:parse_blif$258 + wire $abc$241$auto$blifparse.cc:576:parse_blif$261 + attribute \force_downto 1 + attribute \src "test.v:8.13-8.24|/usr/bin/../share/yosys/techmap.v:270.26-270.27" + attribute \unused_bits "1 2 3 4 5 6 7" + wire width 8 $auto$alumacc.cc:485:replace_alu$4.Y + attribute \src "test.v:2.8-2.11" + wire input 1 \clk + attribute \src "test.v:4.19-4.26" + wire width 8 upto output 2 \counter + attribute \module_not_derived 1 + attribute \src "pla.v:48.5-51.4|pla.v:38.3-41.4" + cell \GAL_SOP $abc$241$auto$blifparse.cc:509:parse_blif$242.genblk1.sop_partial + parameter signed \DEPTH 2 + parameter \TABLE 16'0110000101000010 + parameter \WIDTH 4 + connect \A { \counter [3:2] \counter [0] \counter [1] } + connect \Y $abc$241$auto$blifparse.cc:509:parse_blif$242.genblk1.partial + end + attribute \module_not_derived 1 + attribute \src "pla.v:58.5-61.4|pla.v:48.5-51.4|pla.v:38.3-41.4" + cell \GAL_SOP $abc$241$auto$blifparse.cc:509:parse_blif$242.genblk1.sop_rest.genblk1.sop_partial + parameter signed \DEPTH 2 + parameter \TABLE 20'00100101011000000000 + parameter \WIDTH 5 + connect \A { $abc$241$auto$blifparse.cc:509:parse_blif$242.genblk1.partial \counter [3:2] \counter [0] \counter [1] } + connect \Y $abc$241$auto$blifparse.cc:509:parse_blif$242.genblk1.sop_rest.genblk1.partial + end + attribute \module_not_derived 1 + attribute \src "pla.v:58.5-61.4|pla.v:38.3-41.4" + cell \GAL_SOP $abc$241$auto$blifparse.cc:509:parse_blif$242.genblk1.sop_rest.genblk1.sop_rest + parameter \DEPTH 2 + parameter \TABLE 24'000001011001100000000000 + parameter \WIDTH 6 + connect \A { $abc$241$auto$blifparse.cc:509:parse_blif$242.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$242.genblk1.partial \counter [3:2] \counter [0] \counter [1] } + connect \Y $abc$241$auto$blifparse.cc:576:parse_blif$243 + end + attribute \module_not_derived 1 + attribute \src "pla.v:48.5-51.4|pla.v:38.3-41.4" + cell \GAL_SOP $abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.sop_partial + parameter signed \DEPTH 2 + parameter \TABLE 20'01100100000100100000 + parameter \WIDTH 5 + connect \A { \counter [4:2] \counter [0] \counter [1] } + connect \Y $abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.partial + end + attribute \module_not_derived 1 + attribute \src "pla.v:58.5-61.4|pla.v:48.5-51.4|pla.v:38.3-41.4" + cell \GAL_SOP $abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.sop_rest.genblk1.sop_partial + parameter signed \DEPTH 2 + parameter \TABLE 24'000100001001100000000000 + parameter \WIDTH 6 + connect \A { $abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.partial \counter [4:2] \counter [0] \counter [1] } + connect \Y $abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.sop_rest.genblk1.partial + end + attribute \module_not_derived 1 + attribute \src "pla.v:58.5-61.4|pla.v:48.5-51.4|pla.v:38.3-41.4" + cell \GAL_SOP $abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_partial + parameter signed \DEPTH 2 + parameter \TABLE 28'0000010101001010000000000000 + parameter \WIDTH 7 + connect \A { $abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.partial \counter [4:2] \counter [0] \counter [1] } + connect \Y $abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial + end + attribute \module_not_derived 1 + attribute \src "pla.v:58.5-61.4|pla.v:38.3-41.4" + cell \GAL_SOP $abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest + parameter \DEPTH 2 + parameter \TABLE 39157760 + parameter \WIDTH 8 + connect \A { $abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.partial \counter [4:2] \counter [0] \counter [1] } + connect \Y $abc$241$auto$blifparse.cc:576:parse_blif$246 + end + attribute \module_not_derived 1 + attribute \src "pla.v:48.5-51.4|pla.v:38.3-41.4" + cell \GAL_SOP $abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_partial + parameter signed \DEPTH 2 + parameter \TABLE 24'011001000000010010000000 + parameter \WIDTH 6 + connect \A { \counter [5:2] \counter [0] \counter [1] } + connect \Y $abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.partial + end + attribute \module_not_derived 1 + attribute \src "pla.v:58.5-61.4|pla.v:48.5-51.4|pla.v:38.3-41.4" + cell \GAL_SOP $abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.sop_partial + parameter signed \DEPTH 2 + parameter \TABLE 28'0001000000100110000000000000 + parameter \WIDTH 7 + connect \A { $abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.partial \counter [5:2] \counter [0] \counter [1] } + connect \Y $abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.partial + end + attribute \module_not_derived 1 + attribute \src "pla.v:58.5-61.4|pla.v:48.5-51.4|pla.v:38.3-41.4" + cell \GAL_SOP $abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_partial + parameter signed \DEPTH 2 + parameter \TABLE 68321280 + parameter \WIDTH 8 + connect \A { $abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.partial \counter [5:2] \counter [0] \counter [1] } + connect \Y $abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial + end + attribute \module_not_derived 1 + attribute \src "pla.v:58.5-61.4|pla.v:48.5-51.4|pla.v:38.3-41.4" + cell \GAL_SOP $abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_partial + parameter signed \DEPTH 2 + parameter \TABLE 36'000000010101100000100000000000000000 + parameter \WIDTH 9 + connect \A { $abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.partial \counter [5:2] \counter [0] \counter [1] } + connect \Y $abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial + end + attribute \module_not_derived 1 + attribute \src "pla.v:58.5-61.4|pla.v:38.3-41.4" + cell \GAL_SOP $abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest + parameter \DEPTH 2 + parameter \TABLE 40'0000000010010101010110000000000000000000 + parameter \WIDTH 10 + connect \A { $abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.partial \counter [5:2] \counter [0] \counter [1] } + connect \Y $abc$241$auto$blifparse.cc:576:parse_blif$249 + end + attribute \module_not_derived 1 + attribute \src "pla.v:48.5-51.4|pla.v:38.3-41.4" + cell \GAL_SOP $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_partial + parameter signed \DEPTH 2 + parameter \TABLE 28'0110010000000001001000000000 + parameter \WIDTH 7 + connect \A { \counter [6:2] \counter [0] \counter [1] } + connect \Y $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.partial + end + attribute \module_not_derived 1 + attribute \src "pla.v:58.5-61.4|pla.v:48.5-51.4|pla.v:38.3-41.4" + cell \GAL_SOP $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_partial + parameter signed \DEPTH 2 + parameter \TABLE 269647872 + parameter \WIDTH 8 + connect \A { $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.partial \counter [6:2] \counter [0] \counter [1] } + connect \Y $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.partial + end + attribute \module_not_derived 1 + attribute \src "pla.v:58.5-61.4|pla.v:48.5-51.4|pla.v:38.3-41.4" + cell \GAL_SOP $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_partial + parameter signed \DEPTH 2 + parameter \TABLE 36'000001000000001001100000000000000000 + parameter \WIDTH 9 + connect \A { $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.partial \counter [6:2] \counter [0] \counter [1] } + connect \Y $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial + end + attribute \module_not_derived 1 + attribute \src "pla.v:58.5-61.4|pla.v:48.5-51.4|pla.v:38.3-41.4" + cell \GAL_SOP $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_partial + parameter signed \DEPTH 2 + parameter \TABLE 40'0000000100000110000010000000000000000000 + parameter \WIDTH 10 + connect \A { $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.partial \counter [6:2] \counter [0] \counter [1] } + connect \Y $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial + end + attribute \module_not_derived 1 + attribute \src "pla.v:58.5-61.4|pla.v:48.5-51.4|pla.v:38.3-41.4" + cell \GAL_SOP $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_partial + parameter signed \DEPTH 2 + parameter \TABLE 44'00000000010101100000001000000000000000000000 + parameter \WIDTH 11 + connect \A { $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.partial \counter [6:2] \counter [0] \counter [1] } + connect \Y $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial + end + attribute \module_not_derived 1 + attribute \src "pla.v:58.5-61.4|pla.v:38.3-41.4" + cell \GAL_SOP $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest + parameter \DEPTH 2 + parameter \TABLE 48'000000000010010101010101100000000000000000000000 + parameter \WIDTH 12 + connect \A { $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.partial \counter [6:2] \counter [0] \counter [1] } + connect \Y $abc$241$auto$blifparse.cc:576:parse_blif$252 + end + attribute \module_not_derived 1 + attribute \src "pla.v:48.5-51.4|pla.v:38.3-41.4" + cell \GAL_SOP $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_partial + parameter signed \DEPTH 2 + parameter \TABLE 1677740032 + parameter \WIDTH 8 + connect \A { \counter [7:2] \counter [0] \counter [1] } + connect \Y $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.partial + end + attribute \module_not_derived 1 + attribute \src "pla.v:58.5-61.4|pla.v:48.5-51.4|pla.v:38.3-41.4" + cell \GAL_SOP $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_partial + parameter signed \DEPTH 2 + parameter \TABLE 36'000100000001100000100000000000000000 + parameter \WIDTH 9 + connect \A { $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.partial \counter [7:2] \counter [0] \counter [1] } + connect \Y $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.partial + end + attribute \module_not_derived 1 + attribute \src "pla.v:58.5-61.4|pla.v:48.5-51.4|pla.v:38.3-41.4" + cell \GAL_SOP $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_partial + parameter signed \DEPTH 2 + parameter \TABLE 40'0000010000000000100110000000000000000000 + parameter \WIDTH 10 + connect \A { $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.partial \counter [7:2] \counter [0] \counter [1] } + connect \Y $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial + end + attribute \module_not_derived 1 + attribute \src "pla.v:58.5-61.4|pla.v:48.5-51.4|pla.v:38.3-41.4" + cell \GAL_SOP $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_partial + parameter signed \DEPTH 2 + parameter \TABLE 44'00000001000000000100101000000000000000000000 + parameter \WIDTH 11 + connect \A { $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.partial \counter [7:2] \counter [0] \counter [1] } + connect \Y $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial + end + attribute \module_not_derived 1 + attribute \src "pla.v:58.5-61.4|pla.v:48.5-51.4|pla.v:38.3-41.4" + cell \GAL_SOP $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_partial + parameter signed \DEPTH 2 + parameter \TABLE 48'000000000100000110000000100000000000000000000000 + parameter \WIDTH 12 + connect \A { $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.partial \counter [7:2] \counter [0] \counter [1] } + connect \Y $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial + end + attribute \module_not_derived 1 + attribute \src "pla.v:58.5-61.4|pla.v:48.5-51.4|pla.v:38.3-41.4" + cell \GAL_SOP $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_partial + parameter signed \DEPTH 2 + parameter \TABLE 52'0000000000010101100000000010000000000000000000000000 + parameter \WIDTH 13 + connect \A { $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.partial \counter [7:2] \counter [0] \counter [1] } + connect \Y $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial + end + attribute \module_not_derived 1 + attribute \src "pla.v:58.5-61.4|pla.v:38.3-41.4" + cell \GAL_SOP $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest + parameter \DEPTH 2 + parameter \TABLE 56'00000000000010010101010101011000000000000000000000000000 + parameter \WIDTH 14 + connect \A { $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.partial \counter [7:2] \counter [0] \counter [1] } + connect \Y $abc$241$auto$blifparse.cc:576:parse_blif$255 + end + attribute \module_not_derived 1 + attribute \src "pla.v:38.3-41.4" + cell \GAL_SOP $abc$241$auto$blifparse.cc:509:parse_blif$257 + parameter \DEPTH 2 + parameter \TABLE 8'10010110 + parameter \WIDTH 2 + connect \A { \counter [0] \counter [1] } + connect \Y $abc$241$auto$blifparse.cc:576:parse_blif$258 + end + attribute \module_not_derived 1 + attribute \src "pla.v:48.5-51.4|pla.v:38.3-41.4" + cell \GAL_SOP $abc$241$auto$blifparse.cc:509:parse_blif$260.genblk1.sop_partial + parameter signed \DEPTH 2 + parameter \TABLE 12'100101011000 + parameter \WIDTH 3 + connect \A { \counter [2] \counter [0] \counter [1] } + connect \Y $abc$241$auto$blifparse.cc:509:parse_blif$260.genblk1.partial + end + attribute \module_not_derived 1 + attribute \src "pla.v:58.5-61.4|pla.v:38.3-41.4" + cell \GAL_SOP $abc$241$auto$blifparse.cc:509:parse_blif$260.genblk1.sop_rest + parameter \DEPTH 2 + parameter \TABLE 16'0001011010000000 + parameter \WIDTH 4 + connect \A { $abc$241$auto$blifparse.cc:509:parse_blif$260.genblk1.partial \counter [2] \counter [0] \counter [1] } + connect \Y $abc$241$auto$blifparse.cc:576:parse_blif$261 + end + attribute \module_not_derived 1 + attribute \src "pla.v:38.3-41.4" + cell \GAL_SOP $abc$241$auto$blifparse.cc:509:parse_blif$263 + parameter \DEPTH 1 + parameter \TABLE 2'01 + parameter \WIDTH 1 + connect \A \counter [0] + connect \Y $auto$alumacc.cc:485:replace_alu$4.Y [0] + end + attribute \src "test.v:7.1-9.4" + cell \DFF_P $auto$ff.cc:266:slice$89 + connect \C \clk + connect \D $auto$alumacc.cc:485:replace_alu$4.Y [0] + connect \Q \counter [0] + end + cell \NDFF_P $extract$\NDFF_P$316 + connect \C \clk + connect \D $abc$241$auto$blifparse.cc:576:parse_blif$258 + connect \Q \counter [1] + end + cell \NDFF_P $extract$\NDFF_P$317 + connect \C \clk + connect \D $abc$241$auto$blifparse.cc:576:parse_blif$261 + connect \Q \counter [2] + end + cell \NDFF_P $extract$\NDFF_P$318 + connect \C \clk + connect \D $abc$241$auto$blifparse.cc:576:parse_blif$243 + connect \Q \counter [3] + end + cell \NDFF_P $extract$\NDFF_P$319 + connect \C \clk + connect \D $abc$241$auto$blifparse.cc:576:parse_blif$246 + connect \Q \counter [4] + end + cell \NDFF_P $extract$\NDFF_P$320 + connect \C \clk + connect \D $abc$241$auto$blifparse.cc:576:parse_blif$249 + connect \Q \counter [5] + end + cell \NDFF_P $extract$\NDFF_P$321 + connect \C \clk + connect \D $abc$241$auto$blifparse.cc:576:parse_blif$252 + connect \Q \counter [6] + end + cell \NDFF_P $extract$\NDFF_P$322 + connect \C \clk + connect \D $abc$241$auto$blifparse.cc:576:parse_blif$255 + connect \Q \counter [7] + end +end diff --git a/test_synth.txt b/test_synth.txt new file mode 100644 index 0000000..4c1d8b1 --- /dev/null +++ b/test_synth.txt @@ -0,0 +1,84 @@ +test clk - - pi \clk +test counter - - po \counter +test $abc$241$auto$blifparse.cc:509:parse_blif$242.genblk1.sop_partial GAL_SOP A unknown { \counter [3:2] \counter [0] \counter [1] } +test $abc$241$auto$blifparse.cc:509:parse_blif$242.genblk1.sop_partial GAL_SOP Y unknown $abc$241$auto$blifparse.cc:509:parse_blif$242.genblk1.partial +test $abc$241$auto$blifparse.cc:509:parse_blif$242.genblk1.sop_rest.genblk1.sop_partial GAL_SOP A unknown { $abc$241$auto$blifparse.cc:509:parse_blif$242.genblk1.partial \counter [3:2] \counter [0] \counter [1] } +test $abc$241$auto$blifparse.cc:509:parse_blif$242.genblk1.sop_rest.genblk1.sop_partial GAL_SOP Y unknown $abc$241$auto$blifparse.cc:509:parse_blif$242.genblk1.sop_rest.genblk1.partial +test $abc$241$auto$blifparse.cc:509:parse_blif$242.genblk1.sop_rest.genblk1.sop_rest GAL_SOP A unknown { $abc$241$auto$blifparse.cc:509:parse_blif$242.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$242.genblk1.partial \counter [3:2] \counter [0] \counter [1] } +test $abc$241$auto$blifparse.cc:509:parse_blif$242.genblk1.sop_rest.genblk1.sop_rest GAL_SOP Y unknown $abc$241$auto$blifparse.cc:576:parse_blif$243 +test $abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.sop_partial GAL_SOP A unknown { \counter [4:2] \counter [0] \counter [1] } +test $abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.sop_partial GAL_SOP Y unknown $abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.partial +test $abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.sop_rest.genblk1.sop_partial GAL_SOP A unknown { $abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.partial \counter [4:2] \counter [0] \counter [1] } +test $abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.sop_rest.genblk1.sop_partial GAL_SOP Y unknown $abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.sop_rest.genblk1.partial +test $abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_partial GAL_SOP A unknown { $abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.partial \counter [4:2] \counter [0] \counter [1] } +test $abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_partial GAL_SOP Y unknown $abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial +test $abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest GAL_SOP A unknown { $abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.partial \counter [4:2] \counter [0] \counter [1] } +test $abc$241$auto$blifparse.cc:509:parse_blif$245.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest GAL_SOP Y unknown $abc$241$auto$blifparse.cc:576:parse_blif$246 +test $abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_partial GAL_SOP A unknown { \counter [5:2] \counter [0] \counter [1] } +test $abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_partial GAL_SOP Y unknown $abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.partial +test $abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.sop_partial GAL_SOP A unknown { $abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.partial \counter [5:2] \counter [0] \counter [1] } +test $abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.sop_partial GAL_SOP Y unknown $abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.partial +test $abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_partial GAL_SOP A unknown { $abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.partial \counter [5:2] \counter [0] \counter [1] } +test $abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_partial GAL_SOP Y unknown $abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial +test $abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_partial GAL_SOP A unknown { $abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.partial \counter [5:2] \counter [0] \counter [1] } +test $abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_partial GAL_SOP Y unknown $abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial +test $abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest GAL_SOP A unknown { $abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.partial \counter [5:2] \counter [0] \counter [1] } +test $abc$241$auto$blifparse.cc:509:parse_blif$248.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest GAL_SOP Y unknown $abc$241$auto$blifparse.cc:576:parse_blif$249 +test $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_partial GAL_SOP A unknown { \counter [6:2] \counter [0] \counter [1] } +test $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_partial GAL_SOP Y unknown $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.partial +test $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_partial GAL_SOP A unknown { $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.partial \counter [6:2] \counter [0] \counter [1] } +test $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_partial GAL_SOP Y unknown $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.partial +test $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_partial GAL_SOP A unknown { $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.partial \counter [6:2] \counter [0] \counter [1] } +test $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_partial GAL_SOP Y unknown $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial +test $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_partial GAL_SOP A unknown { $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.partial \counter [6:2] \counter [0] \counter [1] } +test $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_partial GAL_SOP Y unknown $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial +test $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_partial GAL_SOP A unknown { $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.partial \counter [6:2] \counter [0] \counter [1] } +test $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_partial GAL_SOP Y unknown $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial +test $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest GAL_SOP A unknown { $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.partial \counter [6:2] \counter [0] \counter [1] } +test $abc$241$auto$blifparse.cc:509:parse_blif$251.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest GAL_SOP Y unknown $abc$241$auto$blifparse.cc:576:parse_blif$252 +test $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_partial GAL_SOP A unknown { \counter [7:2] \counter [0] \counter [1] } +test $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_partial GAL_SOP Y unknown $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.partial +test $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_partial GAL_SOP A unknown { $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.partial \counter [7:2] \counter [0] \counter [1] } +test $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_partial GAL_SOP Y unknown $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.partial +test $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_partial GAL_SOP A unknown { $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.partial \counter [7:2] \counter [0] \counter [1] } +test $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_partial GAL_SOP Y unknown $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial +test $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_partial GAL_SOP A unknown { $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.partial \counter [7:2] \counter [0] \counter [1] } +test $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_partial GAL_SOP Y unknown $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial +test $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_partial GAL_SOP A unknown { $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.partial \counter [7:2] \counter [0] \counter [1] } +test $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_partial GAL_SOP Y unknown $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial +test $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_partial GAL_SOP A unknown { $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.partial \counter [7:2] \counter [0] \counter [1] } +test $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_partial GAL_SOP Y unknown $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial +test $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest GAL_SOP A unknown { $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.partial $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.partial \counter [7:2] \counter [0] \counter [1] } +test $abc$241$auto$blifparse.cc:509:parse_blif$254.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest.genblk1.sop_rest GAL_SOP Y unknown $abc$241$auto$blifparse.cc:576:parse_blif$255 +test $abc$241$auto$blifparse.cc:509:parse_blif$257 GAL_SOP A unknown { \counter [0] \counter [1] } +test $abc$241$auto$blifparse.cc:509:parse_blif$257 GAL_SOP Y unknown $abc$241$auto$blifparse.cc:576:parse_blif$258 +test $abc$241$auto$blifparse.cc:509:parse_blif$260.genblk1.sop_partial GAL_SOP A unknown { \counter [2] \counter [0] \counter [1] } +test $abc$241$auto$blifparse.cc:509:parse_blif$260.genblk1.sop_partial GAL_SOP Y unknown $abc$241$auto$blifparse.cc:509:parse_blif$260.genblk1.partial +test $abc$241$auto$blifparse.cc:509:parse_blif$260.genblk1.sop_rest GAL_SOP A unknown { $abc$241$auto$blifparse.cc:509:parse_blif$260.genblk1.partial \counter [2] \counter [0] \counter [1] } +test $abc$241$auto$blifparse.cc:509:parse_blif$260.genblk1.sop_rest GAL_SOP Y unknown $abc$241$auto$blifparse.cc:576:parse_blif$261 +test $abc$241$auto$blifparse.cc:509:parse_blif$263 GAL_SOP A unknown \counter [0] +test $abc$241$auto$blifparse.cc:509:parse_blif$263 GAL_SOP Y unknown $auto$alumacc.cc:485:replace_alu$4.Y [0] +test $auto$ff.cc:266:slice$89 DFF_P C unknown \clk +test $auto$ff.cc:266:slice$89 DFF_P D unknown $auto$alumacc.cc:485:replace_alu$4.Y [0] +test $auto$ff.cc:266:slice$89 DFF_P Q unknown \counter [0] +test $extract$\NDFF_P$316 NDFF_P C unknown \clk +test $extract$\NDFF_P$316 NDFF_P D unknown $abc$241$auto$blifparse.cc:576:parse_blif$258 +test $extract$\NDFF_P$316 NDFF_P Q unknown \counter [1] +test $extract$\NDFF_P$317 NDFF_P C unknown \clk +test $extract$\NDFF_P$317 NDFF_P D unknown $abc$241$auto$blifparse.cc:576:parse_blif$261 +test $extract$\NDFF_P$317 NDFF_P Q unknown \counter [2] +test $extract$\NDFF_P$318 NDFF_P C unknown \clk +test $extract$\NDFF_P$318 NDFF_P D unknown $abc$241$auto$blifparse.cc:576:parse_blif$243 +test $extract$\NDFF_P$318 NDFF_P Q unknown \counter [3] +test $extract$\NDFF_P$319 NDFF_P C unknown \clk +test $extract$\NDFF_P$319 NDFF_P D unknown $abc$241$auto$blifparse.cc:576:parse_blif$246 +test $extract$\NDFF_P$319 NDFF_P Q unknown \counter [4] +test $extract$\NDFF_P$320 NDFF_P C unknown \clk +test $extract$\NDFF_P$320 NDFF_P D unknown $abc$241$auto$blifparse.cc:576:parse_blif$249 +test $extract$\NDFF_P$320 NDFF_P Q unknown \counter [5] +test $extract$\NDFF_P$321 NDFF_P C unknown \clk +test $extract$\NDFF_P$321 NDFF_P D unknown $abc$241$auto$blifparse.cc:576:parse_blif$252 +test $extract$\NDFF_P$321 NDFF_P Q unknown \counter [6] +test $extract$\NDFF_P$322 NDFF_P C unknown \clk +test $extract$\NDFF_P$322 NDFF_P D unknown $abc$241$auto$blifparse.cc:576:parse_blif$255 +test $extract$\NDFF_P$322 NDFF_P Q unknown \counter [7] diff --git a/test_synth.v b/test_synth.v new file mode 100644 index 0000000..9ee519b --- /dev/null +++ b/test_synth.v @@ -0,0 +1,396 @@ +/* Generated by Yosys 0.37 (git sha1 a5c7f69ed8f, gcc 13.2.1 -march=x86-64 -mtune=generic -O2 -fno-plt -fexceptions -fstack-clash-protection -fcf-protection -ffile-prefix-map=/build/yosys/src=/usr/src/debug/yosys -fPIC -Os) */ + +(* top = 1 *) +(* src = "test.v:1.1-11.10" *) +module test(clk, counter); + (* src = "pla.v:43.8-43.15" *) + wire _00_; + (* src = "pla.v:58.5-61.4|pla.v:43.8-43.15" *) + wire _01_; + (* src = "pla.v:43.8-43.15" *) + wire _02_; + (* src = "pla.v:58.5-61.4|pla.v:43.8-43.15" *) + wire _03_; + (* src = "pla.v:58.5-61.4|pla.v:43.8-43.15" *) + wire _04_; + (* src = "pla.v:43.8-43.15" *) + wire _05_; + (* src = "pla.v:58.5-61.4|pla.v:43.8-43.15" *) + wire _06_; + (* src = "pla.v:58.5-61.4|pla.v:43.8-43.15" *) + wire _07_; + (* src = "pla.v:58.5-61.4|pla.v:43.8-43.15" *) + wire _08_; + (* src = "pla.v:43.8-43.15" *) + wire _09_; + (* src = "pla.v:58.5-61.4|pla.v:43.8-43.15" *) + wire _10_; + (* src = "pla.v:58.5-61.4|pla.v:43.8-43.15" *) + wire _11_; + (* src = "pla.v:58.5-61.4|pla.v:43.8-43.15" *) + wire _12_; + (* src = "pla.v:58.5-61.4|pla.v:43.8-43.15" *) + wire _13_; + (* src = "pla.v:43.8-43.15" *) + wire _14_; + (* src = "pla.v:58.5-61.4|pla.v:43.8-43.15" *) + wire _15_; + (* src = "pla.v:58.5-61.4|pla.v:43.8-43.15" *) + wire _16_; + (* src = "pla.v:58.5-61.4|pla.v:43.8-43.15" *) + wire _17_; + (* src = "pla.v:58.5-61.4|pla.v:43.8-43.15" *) + wire _18_; + (* src = "pla.v:58.5-61.4|pla.v:43.8-43.15" *) + wire _19_; + (* src = "pla.v:43.8-43.15" *) + wire _20_; + wire _21_; + wire _22_; + wire _23_; + wire _24_; + wire _25_; + wire _26_; + wire _27_; + (* force_downto = 32'd1 *) + (* src = "test.v:8.13-8.24|/usr/bin/../share/yosys/techmap.v:270.26-270.27" *) + (* unused_bits = "1 2 3 4 5 6 7" *) + wire [7:0] _28_; + (* src = "test.v:2.8-2.11" *) + input clk; + wire clk; + (* src = "test.v:4.19-4.26" *) + output [0:7] counter; + wire [0:7] counter; + (* module_not_derived = 32'd1 *) + (* src = "pla.v:48.5-51.4|pla.v:38.3-41.4" *) + GAL_SOP #( + .DEPTH(32'sd2), + .TABLE(16'h6142), + .WIDTH(32'd4) + ) _29_ ( + .A({ counter[4:5], counter[7], counter[6] }), + .Y(_00_) + ); + (* module_not_derived = 32'd1 *) + (* src = "pla.v:58.5-61.4|pla.v:48.5-51.4|pla.v:38.3-41.4" *) + GAL_SOP #( + .DEPTH(32'sd2), + .TABLE(20'h25600), + .WIDTH(32'd5) + ) _30_ ( + .A({ _00_, counter[4:5], counter[7], counter[6] }), + .Y(_01_) + ); + (* module_not_derived = 32'd1 *) + (* src = "pla.v:58.5-61.4|pla.v:38.3-41.4" *) + GAL_SOP #( + .DEPTH(32'd2), + .TABLE(24'h059800), + .WIDTH(32'd6) + ) _31_ ( + .A({ _01_, _00_, counter[4:5], counter[7], counter[6] }), + .Y(_21_) + ); + (* module_not_derived = 32'd1 *) + (* src = "pla.v:48.5-51.4|pla.v:38.3-41.4" *) + GAL_SOP #( + .DEPTH(32'sd2), + .TABLE(20'h64120), + .WIDTH(32'd5) + ) _32_ ( + .A({ counter[3:5], counter[7], counter[6] }), + .Y(_02_) + ); + (* module_not_derived = 32'd1 *) + (* src = "pla.v:58.5-61.4|pla.v:48.5-51.4|pla.v:38.3-41.4" *) + GAL_SOP #( + .DEPTH(32'sd2), + .TABLE(24'h109800), + .WIDTH(32'd6) + ) _33_ ( + .A({ _02_, counter[3:5], counter[7], counter[6] }), + .Y(_03_) + ); + (* module_not_derived = 32'd1 *) + (* src = "pla.v:58.5-61.4|pla.v:48.5-51.4|pla.v:38.3-41.4" *) + GAL_SOP #( + .DEPTH(32'sd2), + .TABLE(28'h054a000), + .WIDTH(32'd7) + ) _34_ ( + .A({ _03_, _02_, counter[3:5], counter[7], counter[6] }), + .Y(_04_) + ); + (* module_not_derived = 32'd1 *) + (* src = "pla.v:58.5-61.4|pla.v:38.3-41.4" *) + GAL_SOP #( + .DEPTH(32'd2), + .TABLE(32'd39157760), + .WIDTH(32'd8) + ) _35_ ( + .A({ _04_, _03_, _02_, counter[3:5], counter[7], counter[6] }), + .Y(_22_) + ); + (* module_not_derived = 32'd1 *) + (* src = "pla.v:48.5-51.4|pla.v:38.3-41.4" *) + GAL_SOP #( + .DEPTH(32'sd2), + .TABLE(24'h640480), + .WIDTH(32'd6) + ) _36_ ( + .A({ counter[2:5], counter[7], counter[6] }), + .Y(_05_) + ); + (* module_not_derived = 32'd1 *) + (* src = "pla.v:58.5-61.4|pla.v:48.5-51.4|pla.v:38.3-41.4" *) + GAL_SOP #( + .DEPTH(32'sd2), + .TABLE(28'h1026000), + .WIDTH(32'd7) + ) _37_ ( + .A({ _05_, counter[2:5], counter[7], counter[6] }), + .Y(_06_) + ); + (* module_not_derived = 32'd1 *) + (* src = "pla.v:58.5-61.4|pla.v:48.5-51.4|pla.v:38.3-41.4" *) + GAL_SOP #( + .DEPTH(32'sd2), + .TABLE(32'd68321280), + .WIDTH(32'd8) + ) _38_ ( + .A({ _06_, _05_, counter[2:5], counter[7], counter[6] }), + .Y(_07_) + ); + (* module_not_derived = 32'd1 *) + (* src = "pla.v:58.5-61.4|pla.v:48.5-51.4|pla.v:38.3-41.4" *) + GAL_SOP #( + .DEPTH(32'sd2), + .TABLE(36'h015820000), + .WIDTH(32'd9) + ) _39_ ( + .A({ _07_, _06_, _05_, counter[2:5], counter[7], counter[6] }), + .Y(_08_) + ); + (* module_not_derived = 32'd1 *) + (* src = "pla.v:58.5-61.4|pla.v:38.3-41.4" *) + GAL_SOP #( + .DEPTH(32'd2), + .TABLE(40'h0095580000), + .WIDTH(32'd10) + ) _40_ ( + .A({ _08_, _07_, _06_, _05_, counter[2:5], counter[7], counter[6] }), + .Y(_23_) + ); + (* module_not_derived = 32'd1 *) + (* src = "pla.v:48.5-51.4|pla.v:38.3-41.4" *) + GAL_SOP #( + .DEPTH(32'sd2), + .TABLE(28'h6401200), + .WIDTH(32'd7) + ) _41_ ( + .A({ counter[1:5], counter[7], counter[6] }), + .Y(_09_) + ); + (* module_not_derived = 32'd1 *) + (* src = "pla.v:58.5-61.4|pla.v:48.5-51.4|pla.v:38.3-41.4" *) + GAL_SOP #( + .DEPTH(32'sd2), + .TABLE(32'd269647872), + .WIDTH(32'd8) + ) _42_ ( + .A({ _09_, counter[1:5], counter[7], counter[6] }), + .Y(_10_) + ); + (* module_not_derived = 32'd1 *) + (* src = "pla.v:58.5-61.4|pla.v:48.5-51.4|pla.v:38.3-41.4" *) + GAL_SOP #( + .DEPTH(32'sd2), + .TABLE(36'h040260000), + .WIDTH(32'd9) + ) _43_ ( + .A({ _10_, _09_, counter[1:5], counter[7], counter[6] }), + .Y(_11_) + ); + (* module_not_derived = 32'd1 *) + (* src = "pla.v:58.5-61.4|pla.v:48.5-51.4|pla.v:38.3-41.4" *) + GAL_SOP #( + .DEPTH(32'sd2), + .TABLE(40'h0106080000), + .WIDTH(32'd10) + ) _44_ ( + .A({ _11_, _10_, _09_, counter[1:5], counter[7], counter[6] }), + .Y(_12_) + ); + (* module_not_derived = 32'd1 *) + (* src = "pla.v:58.5-61.4|pla.v:48.5-51.4|pla.v:38.3-41.4" *) + GAL_SOP #( + .DEPTH(32'sd2), + .TABLE(44'h00560200000), + .WIDTH(32'd11) + ) _45_ ( + .A({ _12_, _11_, _10_, _09_, counter[1:5], counter[7], counter[6] }), + .Y(_13_) + ); + (* module_not_derived = 32'd1 *) + (* src = "pla.v:58.5-61.4|pla.v:38.3-41.4" *) + GAL_SOP #( + .DEPTH(32'd2), + .TABLE(48'h002555800000), + .WIDTH(32'd12) + ) _46_ ( + .A({ _13_, _12_, _11_, _10_, _09_, counter[1:5], counter[7], counter[6] }), + .Y(_24_) + ); + (* module_not_derived = 32'd1 *) + (* src = "pla.v:48.5-51.4|pla.v:38.3-41.4" *) + GAL_SOP #( + .DEPTH(32'sd2), + .TABLE(32'd1677740032), + .WIDTH(32'd8) + ) _47_ ( + .A({ counter[0:5], counter[7], counter[6] }), + .Y(_14_) + ); + (* module_not_derived = 32'd1 *) + (* src = "pla.v:58.5-61.4|pla.v:48.5-51.4|pla.v:38.3-41.4" *) + GAL_SOP #( + .DEPTH(32'sd2), + .TABLE(36'h101820000), + .WIDTH(32'd9) + ) _48_ ( + .A({ _14_, counter[0:5], counter[7], counter[6] }), + .Y(_15_) + ); + (* module_not_derived = 32'd1 *) + (* src = "pla.v:58.5-61.4|pla.v:48.5-51.4|pla.v:38.3-41.4" *) + GAL_SOP #( + .DEPTH(32'sd2), + .TABLE(40'h0400980000), + .WIDTH(32'd10) + ) _49_ ( + .A({ _15_, _14_, counter[0:5], counter[7], counter[6] }), + .Y(_16_) + ); + (* module_not_derived = 32'd1 *) + (* src = "pla.v:58.5-61.4|pla.v:48.5-51.4|pla.v:38.3-41.4" *) + GAL_SOP #( + .DEPTH(32'sd2), + .TABLE(44'h01004a00000), + .WIDTH(32'd11) + ) _50_ ( + .A({ _16_, _15_, _14_, counter[0:5], counter[7], counter[6] }), + .Y(_17_) + ); + (* module_not_derived = 32'd1 *) + (* src = "pla.v:58.5-61.4|pla.v:48.5-51.4|pla.v:38.3-41.4" *) + GAL_SOP #( + .DEPTH(32'sd2), + .TABLE(48'h004180800000), + .WIDTH(32'd12) + ) _51_ ( + .A({ _17_, _16_, _15_, _14_, counter[0:5], counter[7], counter[6] }), + .Y(_18_) + ); + (* module_not_derived = 32'd1 *) + (* src = "pla.v:58.5-61.4|pla.v:48.5-51.4|pla.v:38.3-41.4" *) + GAL_SOP #( + .DEPTH(32'sd2), + .TABLE(52'h0015802000000), + .WIDTH(32'd13) + ) _52_ ( + .A({ _18_, _17_, _16_, _15_, _14_, counter[0:5], counter[7], counter[6] }), + .Y(_19_) + ); + (* module_not_derived = 32'd1 *) + (* src = "pla.v:58.5-61.4|pla.v:38.3-41.4" *) + GAL_SOP #( + .DEPTH(32'd2), + .TABLE(56'h00095558000000), + .WIDTH(32'd14) + ) _53_ ( + .A({ _19_, _18_, _17_, _16_, _15_, _14_, counter[0:5], counter[7], counter[6] }), + .Y(_25_) + ); + (* module_not_derived = 32'd1 *) + (* src = "pla.v:38.3-41.4" *) + GAL_SOP #( + .DEPTH(32'd2), + .TABLE(8'h96), + .WIDTH(32'd2) + ) _54_ ( + .A({ counter[7], counter[6] }), + .Y(_26_) + ); + (* module_not_derived = 32'd1 *) + (* src = "pla.v:48.5-51.4|pla.v:38.3-41.4" *) + GAL_SOP #( + .DEPTH(32'sd2), + .TABLE(12'h958), + .WIDTH(32'd3) + ) _55_ ( + .A({ counter[5], counter[7], counter[6] }), + .Y(_20_) + ); + (* module_not_derived = 32'd1 *) + (* src = "pla.v:58.5-61.4|pla.v:38.3-41.4" *) + GAL_SOP #( + .DEPTH(32'd2), + .TABLE(16'h1680), + .WIDTH(32'd4) + ) _56_ ( + .A({ _20_, counter[5], counter[7], counter[6] }), + .Y(_27_) + ); + (* module_not_derived = 32'd1 *) + (* src = "pla.v:38.3-41.4" *) + GAL_SOP #( + .DEPTH(32'd1), + .TABLE(2'h1), + .WIDTH(32'd1) + ) _57_ ( + .A(counter[7]), + .Y(_28_[0]) + ); + (* src = "test.v:7.1-9.4" *) + DFF_P _58_ ( + .C(clk), + .D(_28_[0]), + .Q(counter[7]) + ); + NDFF_P _59_ ( + .C(clk), + .D(_26_), + .Q(counter[6]) + ); + NDFF_P _60_ ( + .C(clk), + .D(_27_), + .Q(counter[5]) + ); + NDFF_P _61_ ( + .C(clk), + .D(_21_), + .Q(counter[4]) + ); + NDFF_P _62_ ( + .C(clk), + .D(_22_), + .Q(counter[3]) + ); + NDFF_P _63_ ( + .C(clk), + .D(_23_), + .Q(counter[2]) + ); + NDFF_P _64_ ( + .C(clk), + .D(_24_), + .Q(counter[1]) + ); + NDFF_P _65_ ( + .C(clk), + .D(_25_), + .Q(counter[0]) + ); +endmodule