OpenFPGA/openfpga_flow/openfpga_arch
chungshien dd577e37e0
LUTRAM Support (#1595)
* BRAM preload data - generic way to extract data from design

* Add docs and support special __layout__ case

* Add test

* Fix warning

* Change none-fabric to non-fabric

* LUTRAM Support Phase 1

* Add Test

* Add more protocol checking to enable LUTRAM feature

* Move the config setting under config protocol

* Revert any changes

---------

Co-authored-by: chungshien-chai <chungshien.chai@gmail.com>
2024-04-19 14:46:38 -07:00
..
README.md
k4_N4_40nm_GlobalTile4ClkPin_cc_openfpga.xml
k4_N4_40nm_GlobalTile4Clk_cc_openfpga.xml
k4_N4_40nm_GlobalTile8Clk_cc_openfpga.xml
k4_N4_40nm_GlobalTileClkMergeSubtilePort_registerable_io_cc_openfpga.xml
k4_N4_40nm_GlobalTileClk_cc_openfpga.xml
k4_N4_40nm_GlobalTileClk_registerable_io_cc_openfpga.xml
k4_N4_40nm_IoSubtile_cc_openfpga.xml
k4_N4_40nm_Ntwk1clk2lvl_cc_openfpga.xml
k4_N4_40nm_Ntwk2clk2lvl_cc_openfpga.xml
k4_N4_40nm_bank_openfpga.xml
k4_N4_40nm_bank_use_both_set_reset_openfpga.xml
k4_N4_40nm_bank_use_reset_openfpga.xml
k4_N4_40nm_bank_use_resetb_openfpga.xml
k4_N4_40nm_bank_use_set_openfpga.xml
k4_N4_40nm_bank_use_setb_openfpga.xml
k4_N4_40nm_cc_abspath_openfpga.xml
k4_N4_40nm_cc_cfgdscffio_openfpga.xml
k4_N4_40nm_cc_cfgscff_openfpga.xml
k4_N4_40nm_cc_openfpga.xml
k4_N4_40nm_cc_use_both_set_reset_openfpga.xml
k4_N4_40nm_cc_use_reset_openfpga.xml
k4_N4_40nm_cc_use_resetb_openfpga.xml
k4_N4_40nm_cc_use_set_openfpga.xml
k4_N4_40nm_cc_use_setb_openfpga.xml
k4_N4_40nm_dsp8reg_cc_openfpga.xml
k4_N4_40nm_fixed_sim_openfpga.xml
k4_N4_40nm_frame_ccff_openfpga.xml
k4_N4_40nm_frame_const_input_gnd_openfpga.xml
k4_N4_40nm_frame_no_const_input_openfpga.xml
k4_N4_40nm_frame_openfpga.xml
k4_N4_40nm_frame_scff_openfpga.xml
k4_N4_40nm_frame_use_both_set_reset_openfpga.xml
k4_N4_40nm_frame_use_reset_openfpga.xml
k4_N4_40nm_frame_use_resetb_openfpga.xml
k4_N4_40nm_frame_use_set_openfpga.xml
k4_N4_40nm_frame_use_setb_openfpga.xml
k4_N4_40nm_multi_region_bank_openfpga.xml
k4_N4_40nm_multi_region_bank_use_both_set_reset_openfpga.xml
k4_N4_40nm_multi_region_cc2clk_openfpga.xml
k4_N4_40nm_multi_region_cc3clk_openfpga.xml
k4_N4_40nm_multi_region_cc_openfpga.xml
k4_N4_40nm_multi_region_cc_use_both_set_reset_openfpga.xml
k4_N4_40nm_multi_region_frame_openfpga.xml
k4_N4_40nm_multi_region_frame_use_both_set_reset_openfpga.xml
k4_N4_40nm_multi_region_qlbank_openfpga.xml
k4_N4_40nm_multi_region_qlbanksr_openfpga.xml
k4_N4_40nm_powergate_frame_openfpga.xml
k4_N4_40nm_qlbank_openfpga.xml
k4_N4_40nm_qlbank_wlr_openfpga.xml
k4_N4_40nm_qlbankflatten_defined_wl_openfpga.xml LUTRAM Support (#1595) 2024-04-19 14:46:38 -07:00
k4_N4_40nm_qlbankflatten_openfpga.xml
k4_N4_40nm_qlbankflatten_wlr_openfpga.xml
k4_N4_40nm_qlbanksr_multi_chain_openfpga.xml
k4_N4_40nm_qlbanksr_openfpga.xml
k4_N4_40nm_qlbanksr_wlr_openfpga.xml
k4_N4_40nm_standalone_openfpga.xml
k4_N4_frac_dsp16_40nm_cc_openfpga.xml
k4_N4_no_local_routing_40nm_frame_openfpga.xml
k4_N5_pattern_local_routing_40nm_frame_openfpga.xml
k4_fracNative_N4_40nm_cc_openfpga.xml
k4_frac_N4_40nm_cc_openfpga.xml
k4_frac_N4_adder_chain_40nm_cc_abspath_openfpga.xml
k4_frac_N4_adder_chain_40nm_cc_openfpga.xml
k4_frac_N4_adder_chain_mem1K_40nm_frame_openfpga.xml
k4_frac_N4_adder_chain_mem1K_L124X_L12Y_40nm_frame_openfpga.xml
k4_frac_N4_adder_chain_mem1K_L124_40nm_frame_openfpga.xml
k4_frac_N4_adder_chain_mem1K_frac_dsp32_40nm_frame_openfpga.xml
k4_frac_N4_fracff2edge_40nm_cc_openfpga.xml
k4_frac_N4_fracff_40nm_cc_openfpga.xml
k4_frac_N4_fracff_40nm_registerable_io_cc_openfpga.xml
k4_frac_N4_fracff_localClkGen_40nm_cc_openfpga.xml
k4_frac_N4_lut_use_and_switch_40nm_cc_openfpga.xml
k4_frac_N4_lutram_40nm_cc_openfpga.xml
k4_frac_N8_register_scan_chain_caravel_io_skywater130nm_fdhd_cc_openfpga.xml
k4_frac_N8_register_scan_chain_embedded_io_skywater130nm_fdhd_cc_openfpga.xml
k4_frac_N8_reset_register_scan_chain_caravel_io_skywater130nm_fdhd_cc_openfpga.xml
k4_frac_N8_reset_softadderSuperLUT_register_scan_chain_caravel_io_skywater130nm_fdhd_cc_openfpga.xml
k4_frac_N8_reset_softadder_register_scan_chain_caravel_io_skywater130nm_fdhd_cc_openfpga.xml
k4_frac_N8_reset_softadder_register_scan_chain_dsp8_caravel_io_skywater130nm_fdhd_cc_openfpga.xml
k4_frac_N8_reset_softadder_register_scan_chain_frac_dsp16_caravel_io_skywater130nm_fdhd_cc_openfpga.xml
k6_N10_40nm_openfpga.xml
k6_N10_intermediate_buffer_40nm_openfpga.xml
k6_frac_N8_40nm_openfpga.xml
k6_frac_N8_debuf_mux_40nm_openfpga.xml
k6_frac_N8_inbuf_only_mux_40nm_openfpga.xml
k6_frac_N8_local_encoder_40nm_openfpga.xml
k6_frac_N8_outbuf_only_mux_40nm_openfpga.xml
k6_frac_N8_stdcell_mux_40nm_openfpga.xml
k6_frac_N8_tree_mux_40nm_openfpga.xml
k6_frac_N10_40nm_openfpga.xml
k6_frac_N10_adder_chain_40nm_openfpga.xml
k6_frac_N10_adder_chain_dpram8K_dsp36_40nm_openfpga.xml
k6_frac_N10_adder_chain_dpram8K_dsp36_fracff_40nm_openfpga.xml
k6_frac_N10_adder_chain_frac_mem32K_frac_dsp36_40nm_GlobalTile8Clk_openfpga.xml
k6_frac_N10_adder_chain_frac_mem32K_frac_dsp36_40nm_openfpga.xml
k6_frac_N10_adder_chain_mem1K_40nm_openfpga.xml
k6_frac_N10_adder_chain_mem16K_40nm_openfpga.xml
k6_frac_N10_adder_chain_mem16K_aib_40nm_openfpga.xml
k6_frac_N10_adder_column_chain_40nm_openfpga.xml
k6_frac_N10_adder_register_chain_40nm_openfpga.xml
k6_frac_N10_adder_register_scan_chain_40nm_openfpga.xml
k6_frac_N10_adder_register_scan_chain_depop50_40nm_openfpga.xml
k6_frac_N10_adder_register_scan_chain_depop50_spypad_40nm_openfpga.xml
k6_frac_N10_behavioral_40nm_openfpga.xml
k6_frac_N10_local_encoder_40nm_openfpga.xml
k6_frac_N10_spyio_40nm_openfpga.xml
k6_frac_N10_stdcell_mux_40nm_openfpga.xml
k6_frac_N10_stdcell_mux_40nm_openfpga_synthesizable.xml
k6_frac_N10_tree_mux_40nm_openfpga.xml

README.md

Naming convention for OpenFPGA architecture files

Please reveal the following architecture features in the names to help quickly spot architecture files. Note that an OpenFPGA architecture can be applied to multiple VPR architecture files.

  • k<lut_size>_: Look-Up Table (LUT) size of FPGA. If you have fracturable LUTs or multiple LUT circuits, this should be largest input size.
    • The keyword 'frac' is to specify if fracturable LUT is used or not.
    • The keyword 'Native' is to specify if fracturable LUT design is a native one (without mode switch) or a standard one (with mode switch).
  • N<le_size>: Number of logic elements for a CLB. If you have multiple CLB architectures, this should be largest number.
  • fracff<2edge>: Use multi-mode flip-flop model, where reset/set polarity is configurable. When 2edge is specified, clock polarity can be switched between postive edge triggered and negative edge triggered
  • adder_chain: If hard adder/carry chain is used inside CLBs
  • register_chain: If shift register chain is used inside CLBs
  • scan_chain: If scan chain testing infrastructure is used inside CLBs
  • __dsp<dsp_size>reg: If Digital Signal Processor (DSP) is used or not. If used, the input size should be clarified here.
    • The keyword 'wide' is to specify if the DSP spans more than 1 column.
    • The keyword 'frac' is to specify if the DSP is fracturable to operate in different modes.
    • The keyword 'reg' is to specify if the DSP has input and output registers. If only input or output registers are used, the keyword will be 'regin' or 'regout' respectively.
  • mem<mem_size>: If block RAM (BRAM) is used or not. If used, the memory size should be clarified here. The keyword wide is to specify if the BRAM spanns more than 1 column.
  • aib: If the Advanced Interface Bus (AIB) is used in place of some I/Os.
  • <bank|cc|frame|standalone>: specify the type of configuration protocol used in the architecture.
    • bank refers to the memory bank
    • cc refers to the configuration chain. Note that a postfix <int>clk may be applied when the configuration chain is controlled by more than 1 clocks
    • frame refers to the frame-based organization
    • standalone referes to the vanilla organization
  • fixed_sim: fixed clock frequencies in simulation settings. If auto clock frequencies are used, there is no need to appear in the naming
  • intermediate buffer: If intermediate buffers are used in LUT designs.
  • behavioral: If behavioral Verilog modeling is specified
  • local_encoder: If local encoders are used in routing multiplexer design
  • spyio/spypad: If spy I/Os are used
  • registerable_io: If I/Os are registerable (can be either combinational or sequential)
  • IoSubtile: If I/O block contains sub tiles (more compact with a higher density of I/Os)
  • stdcell: If circuit designs are built with standard cells only
  • tree_mux: If routing multiplexers are built with a tree-like structure
  • localClkGen: The clock signal of CLB can be generated by internal programmable resources
  • <feature_size>: The technology node which the delay numbers are extracted from.
  • powergate : The FPGA has power-gating techniques applied. If not defined, there is no power-gating.
  • GlobalTileClk: How many clocks are defined through global ports from physical tiles.
    • is the number of clocks
    • When specified, multiple clocks are in separated pins with different names
  • abspath: All the paths in the architecture file are absolute and hardcoded.

Other features are used in naming should be listed here.