Решетка Diamond `включает не работает

Я использую Lattice Diamond, и у меня есть файл verilog с кучей операторов `define для определения глобальных констант.

Я включаю этот файл «заголовка» в другой файл. Файл находит, но ошибка:

"2049990 ОШИБКА - C:/_libraries/LatticeDiamond/verilog-uart/source/uart/uart_loopback_tb.v(184,38-184,53) (VERI-1128) UART

/********************************************************************************************
*   @file UART_Header.v
*   @brief
*   Defines UART module parameter constants
*
*   @details
*   This file is to support the UART_core.v 
*
*
*   @namespace UART_
********************************************************************************************/
`ifndef UART_HEADER_FILE
`define UART_HEADER_FILE

// UART core register addresses
`define UART_WRITE_ADDR     = 8'h00;        ///< UART TX address
`define UART_READ_ADDR      = 8'h00;        ///< UART address to read received data
`define UART_LCR_ADDR       = 8'h03;        ///< Line control register
`define UART_LSR_ADDR       = 8'h05;        ///< Line status register
`define UART_DIV_LW_ADDR    = 8'b00000111;  ///< Baud Rate divisor register low word
`define UART_DIV_HW_ADDR    = 8'b00000110;  ///< Baud Rate divisor register high word


// UART core bit masks
`define UART_5_DATA_BITS    = 16'b00000000; ///< 5 data bits mask
`define UART_6_DATA_BITS    = 16'b00000001; ///< 6 data bits mask
`define UART_7_DATA_BITS    = 16'b00000010; ///< 7 data bits mask
`define UART_8_DATA_BITS    = 16'b00000011; ///< 8 data bits mask

`define UART_1_STOP_BIT     = 16'b00000000; ///< 1 stop bit mask
`define UART_1_5_STOP_BIT   = 16'b00000100; ///< 1.5 stop bits mask
`define UART
`ifndef UART_LOOPBACK_TB_FILE
`define UART_LOOPBACK_TB_FILE 

//*******************************************************************************************
//                          Includes
//*******************************************************************************************

`include "source/uart/UART_header.v"

// Rest of the code for this file
.....................
UL_TB_WriteReg((UART_8_DATA_BITS | UART_1_STOP_BIT | UART_PARITY_DISABLE), UART_LCR_ADDR);



...................

`endif
STOP_BIT = 16'b00001000; ///< 2 stop bits mask `define UART_PARITY_ENABLE = 16'b00010000; ///< Enable parity bit mask `define UART_PARITY_DISABLE = 16'b00000000; ///< Disable parity bit mask `endif //EOF
STOP_BIT не объявлен"

У меня есть каталог файла заголовка, установленный как путь включения в настройках проекта для реализации.

/********************************************************************************************
*   @file UART_Header.v
*   @brief
*   Defines UART module parameter constants
*
*   @details
*   This file is to support the UART_core.v 
*
*
*   @namespace UART_
********************************************************************************************/
`ifndef UART_HEADER_FILE
`define UART_HEADER_FILE

// UART core register addresses
`define UART_WRITE_ADDR     = 8'h00;        ///< UART TX address
`define UART_READ_ADDR      = 8'h00;        ///< UART address to read received data
`define UART_LCR_ADDR       = 8'h03;        ///< Line control register
`define UART_LSR_ADDR       = 8'h05;        ///< Line status register
`define UART_DIV_LW_ADDR    = 8'b00000111;  ///< Baud Rate divisor register low word
`define UART_DIV_HW_ADDR    = 8'b00000110;  ///< Baud Rate divisor register high word


// UART core bit masks
`define UART_5_DATA_BITS    = 16'b00000000; ///< 5 data bits mask
`define UART_6_DATA_BITS    = 16'b00000001; ///< 6 data bits mask
`define UART_7_DATA_BITS    = 16'b00000010; ///< 7 data bits mask
`define UART_8_DATA_BITS    = 16'b00000011; ///< 8 data bits mask

`define UART_1_STOP_BIT     = 16'b00000000; ///< 1 stop bit mask
`define UART_1_5_STOP_BIT   = 16'b00000100; ///< 1.5 stop bits mask
`define UART
`ifndef UART_LOOPBACK_TB_FILE
`define UART_LOOPBACK_TB_FILE 

//*******************************************************************************************
//                          Includes
//*******************************************************************************************

`include "source/uart/UART_header.v"

// Rest of the code for this file
.....................
UL_TB_WriteReg((UART_8_DATA_BITS | UART_1_STOP_BIT | UART_PARITY_DISABLE), UART_LCR_ADDR);



...................

`endif
STOP_BIT = 16'b00001000; ///< 2 stop bits mask `define UART_PARITY_ENABLE = 16'b00010000; ///< Enable parity bit mask `define UART_PARITY_DISABLE = 16'b00000000; ///< Disable parity bit mask `endif //EOF

Затем у меня есть файл, который включает этот файл вот так.

`ifndef UART_LOOPBACK_TB_FILE
`define UART_LOOPBACK_TB_FILE 

//*******************************************************************************************
//                          Includes
//*******************************************************************************************

`include "source/uart/UART_header.v"

// Rest of the code for this file
.....................
UL_TB_WriteReg((UART_8_DATA_BITS | UART_1_STOP_BIT | UART_PARITY_DISABLE), UART_LCR_ADDR);



...................

`endif

Почему он не может найти мои определения? Файл, содержащий заголовочный файл, находится даже в том же каталоге, что и сам заголовочный файл. Поддерживает ли Lattice Diamond это?

Я также попытался включить «UART_header.v», поскольку он находится в том же каталоге, но это дает ту же ошибку.


person user2676271    schedule 11.07.2018    source источник


Ответы (1)


Наверняка вы имеете в виду это:

UL_TB_WriteReg((`UART_8_DATA_BITS | `UART_1_STOP_BIT | `UART_PARITY_DISABLE), `UART_LCR_ADDR);
//              ^                   ^                  ^                      ^

Вещи, которые были определены в Verilog, должны предваряться обратной кавычкой.

person Matthew Taylor    schedule 11.07.2018
comment
Да, также в моих операторах `define есть = и ; характер, который также явно неверен. Я преобразовал их из локальных параметров и не избавился от них! Не знаю, как я это пропустил. - person user2676271; 12.07.2018
comment
@ user2676271 Так и есть. Я тоже этого не заметил. - person Matthew Taylor; 12.07.2018