VBOM(5) Retro Project Manual VBOM(5) NNAAMMEE vbom - vhdl manifest file format - 'vhdl bill of material' DDEESSCCRRIIPPTTIIOONN vvbboomm files describe the sources needed to build a _V_H_D_L entity. The source files are either given directly in the case of libraries or via other vvbboomm's in the case of instantiated components. They are used by vvbboommccoonnvv(1) to build project descriptions for synthesis and simulation tools. vvbboommccoonnvv expects that the entries in the vvbboomm's are ordered, libraries first, then the components in the order they are instantiated, and fi- nally the name of the associated source file. The format has five types of lines: CCoommmmeennttss Each line starting with '##' is treated as a comment and ignored. FFiillee nnaammeess Either source files or nested vvbboomm's. The file names must be given as relative path names from the directory the vvbboomm file is located in. Absolute path names are not allowed, nor is an expansion of environment variables. Currently, the following file types are accepted: ..vvbboomm refers to a nested vvbboomm. Usually used for instantiated compo- nents. ..vvhhdd refers to a source file. Usually used for libraries referred to in 'use' clauses, and as the last file, the source file of the entity which is described by this vvbboomm file. ..vv ..ssvv refers to a Verilog or System Verilog source file. Accepted by the Vivado xsim simulator. Typically used for DPI wrappers or simprim-based models in Vivado. ..cc refers to the C sources which implement either a VHDL func- tion or procedure via the VHPI mechanism or a System Verilog function via the DPI mechanism. Supported only in conjunction with GHDL and Vivado simulator. FFiillee aattttrriibbuutteess File names can be followed by a list of attributes of the form -_n_a_m_e[:_v_a_l_u_e] ... Currently, the following attributes are recognized --UUUUTT Signals that the _v_b_o_m describes a test bench and that file is the 'unit under test'. This allows splitting the sources into a simulation-only test bench part and a synthesizable 'unit under test' part. The file is typically a _v_b_o_m in case of a behavioral simulation or the file name of a generated model for a functional or timing simulation. --SSCCOOPPEE__RREEFF[[::_e_n_t_i_t_y]] Signals that the xdc file should be 'scoped to reference' to _e_n_t_i_t_y. If _e_n_t_i_t_y is omitted the filename is taken as the entity name. In general used together with the @@xxddcc:: direc- tive. CCoonnddiittiioonnaall ffiillee nnaammeess File names can be preceded by a condition prefix of the form [_t_a_g]filename [_t_a_g,_t_a_g,...]filename The main purpose of this mechanism is to handle libraries and com- ponents which are only referred in -- synthesis translate_off -- synthesis translate_on sections and are used only for simulation. Currently, supported _t_a_g names are gghhddll included in conjunction with GHDL simulation vviivv included in conjunction with Vivado targets vvssyynn included in conjunction with Vivado synthesis vvssiimm included in conjunction with Vivado simulation iissee included in conjunction with ISE targets xxsstt included in conjunction with ISE xst synthesis iissiimm included in conjunction with ISE ISim simulation ssiimm included in conjunction with simulation (ghdl,isim,vsim) LLooggiiccaall nnaammeess A logical name can be defined with _l_n_a_m_e = _f_i_l_e_n_a_m_e The first definition of a logical name encountered in the traversal of the vvbboomm's by vvbboommccoonnvv(1) is taken, and all later definitions are ignored. A logical name can be used with ${_l_n_a_m_e} ${_l_n_a_m_e := _d_e_f_a_u_l_t} In the first form, _l_n_a_m_e must have been defined before. The second form allows specifying a _d_e_f_a_u_l_t which is used when _l_n_a_m_e hasn't been defined so far. Again, the filenames must be given as relative path names from the directory the vvbboomm file is located in. DDiirreeccttiivveess Directives start with a '@@', currently implemented are: @@ttoopp:_n_a_m_e Specifies the top-level design name. Mainly used when it is different from the stem of the vvbboomm file name. @@lliibb:_n_a_m_e Specifies an additional system library. Allowed values for _n_a_m_e are _u_n_i_s_i_m, _u_n_i_m_a_c_r_o, and _s_i_m_p_r_i_m. Currently used to generate the appropriate -L options for gghhddll commands, e.g. generated by the vvbboommccoonnvv action ----gghhddll__mm. @@xxddcc:_f_i_l_e Specifies that _f_i_l_e is a constraint file for Vivado synthesis and should be included in the constraints fileset. @@ttccll:_f_i_l_e specifies that _f_i_l_e is a Tcl script to be executed when build- ing the Vivado project. The Tcl script generated by the vvbboomm-- ccoonnvv action ----vvssyynn__pprrjj will contain statements with source _f_i_l_e. @@uuccff__ccpppp:_f_i_l_e Specifies that a _f_i_l_e.ucf file is to be generated by ccpppp(1) from a _f_i_l_e.ucf_cpp source file. This allows modularizing ISE ucf files. EEXXAAMMPPLLEESS SSiimmppllee eennttiittyy A simple VHDL entity named _b_p___2_l_4_l which is defined in the source file _b_p___2_l_4_l_._v_h_d, which uses the library _s_l_v_t_y_p_e_s and instantiates _b_p___2_l_i_n_e and _b_p___4_l_i_n_e, might have a _b_p___2_l_4_l_._v_b_o_m like # libs ../../vlib/slvtypes.vhd # components bp_2line.vbom bp_4line.vbom # design bp_2l4l.vhd Note that the VHDL source file _b_p___2_l_4_l_._v_h_d is always given in the vvbboomm file which describes this source file. The comments are put in by con- vention to help the human reader and are not interpreted by vvbboommccoonnvv. SSEEEE AALLSSOO vvbboommccoonnvv(1), gghhddll(1), ccpppp(1) AAUUTTHHOORR Walter F.J. Mueller Retro Project 2018-11-09 VBOM(5)