|
Hi. There are numerous instances in rtl/verilog/uart_defines.v of using single line comments ("//") in a `define statement. For me (at least), the Modelsim simulator barfs with this. For example, if you
`define TRUE 1 // Hi mom
in a header file and then later on `include that header file and
try to assign something the macro TRUE:
foo <= `TRUE;
with a simplistic substitution, you would get
foo <= 1 // Hi mom;
which is a syntax error (missing semicolon). This is why you should define
`define TRUE 1 /* Hi mom using no single line comments! */ Some C compilers have the same issue. This is why you should not use single line comments on a `define or #define macro assignment! Here is my proposed patch to rtl/verilog/uart_defines.v. This is the output of diff -c3 (your version) (my patched version). Regards,
Jeff *** dist/uart_defines.v Fri Sep 12 00:26:58 2003
--- uart_defines.v Mon May 15 10:53:55 2006
***************
*** 152,234 ****
// `define UART_HAS_BAUDRATE_OUTPUT
! // Register addresses
! `define UART_REG_RB `UART_ADDR_WIDTH'd0 // receiver buffer
! `define UART_REG_TR `UART_ADDR_WIDTH'd0 // transmitter
! `define UART_REG_IE `UART_ADDR_WIDTH'd1 // Interrupt enable
! `define UART_REG_II `UART_ADDR_WIDTH'd2 // Interrupt identification
! `define UART_REG_FC `UART_ADDR_WIDTH'd2 // FIFO control
! `define UART_REG_LC `UART_ADDR_WIDTH'd3 // Line Control
! `define UART_REG_MC `UART_ADDR_WIDTH'd4 // Modem control
! `define UART_REG_LS `UART_ADDR_WIDTH'd5 // Line status
! `define UART_REG_MS `UART_ADDR_WIDTH'd6 // Modem status
! `define UART_REG_SR `UART_ADDR_WIDTH'd7 // Scratch register
! `define UART_REG_DL1 `UART_ADDR_WIDTH'd0 // Divisor latch bytes (1-2)
`define UART_REG_DL2 `UART_ADDR_WIDTH'd1
! // Interrupt Enable register bits
! `define UART_IE_RDA 0 // Received Data available interrupt
! `define UART_IE_THRE 1 // Transmitter Holding Register empty interrupt
! `define UART_IE_RLS 2 // Receiver Line Status Interrupt
! `define UART_IE_MS 3 // Modem Status Interrupt
!
! // Interrupt Identification register bits
! `define UART_II_IP 0 // Interrupt pending when 0
! `define UART_II_II 3:1 // Interrupt identification
!
! // Interrupt identification values for bits 3:1
! `define UART_II_RLS 3'b011 // Receiver Line Status
! `define UART_II_RDA 3'b010 // Receiver Data available
! `define UART_II_TI 3'b110 // Timeout Indication
! `define UART_II_THRE 3'b001 // Transmitter Holding Register empty
! `define UART_II_MS 3'b000 // Modem Status
!
! // FIFO Control Register bits
! `define UART_FC_TL 1:0 // Trigger level
!
! // FIFO trigger level values
! `define UART_FC_1 2'b00
! `define UART_FC_4 2'b01
`define UART_FC_8 2'b10
`define UART_FC_14 2'b11
! // Line Control register bits
! `define UART_LC_BITS 1:0 // bits in character
! `define UART_LC_SB 2 // stop bits
! `define UART_LC_PE 3 // parity enable
! `define UART_LC_EP 4 // even parity
! `define UART_LC_SP 5 // stick parity
! `define UART_LC_BC 6 // Break control
! `define UART_LC_DL 7 // Divisor Latch access bit
! // Modem Control register bits
`define UART_MC_DTR 0
`define UART_MC_RTS 1
`define UART_MC_OUT1 2
`define UART_MC_OUT2 3
! `define UART_MC_LB 4 // Loopback mode
! // Line Status Register bits
! `define UART_LS_DR 0 // Data ready
! `define UART_LS_OE 1 // Overrun Error
! `define UART_LS_PE 2 // Parity Error
! `define UART_LS_FE 3 // Framing Error
! `define UART_LS_BI 4 // Break interrupt
! `define UART_LS_TFE 5 // Transmit FIFO is empty
! `define UART_LS_TE 6 // Transmitter Empty indicator
! `define UART_LS_EI 7 // Error indicator
! // Modem Status Register bits
! `define UART_MS_DCTS 0 // Delta signals
`define UART_MS_DDSR 1
`define UART_MS_TERI 2
`define UART_MS_DDCD 3
! `define UART_MS_CCTS 4 // Complement signals
`define UART_MS_CDSR 5
`define UART_MS_CRI 6
`define UART_MS_CDCD 7
! // FIFO parameter defines
`define UART_FIFO_WIDTH 8
`define UART_FIFO_DEPTH 16
--- 152,234 ----
// `define UART_HAS_BAUDRATE_OUTPUT
! /* Register addresses */
! `define UART_REG_RB `UART_ADDR_WIDTH'd0 /* receiver buffer */
! `define UART_REG_TR `UART_ADDR_WIDTH'd0 /* transmitter */
! `define UART_REG_IE `UART_ADDR_WIDTH'd1 /* Interrupt enable */
! `define UART_REG_II `UART_ADDR_WIDTH'd2 /* Interrupt identification */
! `define UART_REG_FC `UART_ADDR_WIDTH'd2 /* FIFO control */
! `define UART_REG_LC `UART_ADDR_WIDTH'd3 /* Line Control */
! `define UART_REG_MC `UART_ADDR_WIDTH'd4 /* Modem control */
! `define UART_REG_LS `UART_ADDR_WIDTH'd5 /* Line status */
! `define UART_REG_MS `UART_ADDR_WIDTH'd6 /* Modem status */
! `define UART_REG_SR `UART_ADDR_WIDTH'd7 /* Scratch register */
! `define UART_REG_DL1 `UART_ADDR_WIDTH'd0 /* Divisor latch bytes (1-2) */
`define UART_REG_DL2 `UART_ADDR_WIDTH'd1
! /* Interrupt Enable register bits */
! `define UART_IE_RDA 0 /* Received Data available interrupt */
! `define UART_IE_THRE 1 /* Transmitter Holding Register empty interrupt */
! `define UART_IE_RLS 2 /* Receiver Line Status Interrupt */
! `define UART_IE_MS 3 /* Modem Status Interrupt */
!
! /* Interrupt Identification register bits */
! `define UART_II_IP 0 /* Interrupt pending when 0 */
! `define UART_II_II 3:1 /* Interrupt identification */
!
! /* Interrupt identification values for bits 3:1 */
! `define UART_II_RLS 3'b011 /* Receiver Line Status */
! `define UART_II_RDA 3'b010 /* Receiver Data available */
! `define UART_II_TI 3'b110 /* Timeout Indication */
! `define UART_II_THRE 3'b001 /* Transmitter Holding Register empty */
! `define UART_II_MS 3'b000 /* Modem Status */
!
! /* FIFO Control Register bits */
! `define UART_FC_TL 1:0 /* Trigger level */
!
! /* FIFO trigger level values */
! `define UART_FC_1 2'b00 */
! `define UART_FC_4 2'b01 */
`define UART_FC_8 2'b10
`define UART_FC_14 2'b11
! /* Line Control register bits */
! `define UART_LC_BITS 1:0 /* bits in character */
! `define UART_LC_SB 2 /* stop bits */
! `define UART_LC_PE 3 /* parity enable */
! `define UART_LC_EP 4 /* even parity */
! `define UART_LC_SP 5 /* stick parity */
! `define UART_LC_BC 6 /* Break control */
! `define UART_LC_DL 7 /* Divisor Latch access bit */
! /* Modem Control register bits */
`define UART_MC_DTR 0
`define UART_MC_RTS 1
`define UART_MC_OUT1 2
`define UART_MC_OUT2 3
! `define UART_MC_LB 4 /* Loopback mode */
! /* Line Status Register bits */
! `define UART_LS_DR 0 /* Data ready */
! `define UART_LS_OE 1 /* Overrun Error */
! `define UART_LS_PE 2 /* Parity Error */
! `define UART_LS_FE 3 /* Framing Error */
! `define UART_LS_BI 4 /* Break interrupt */
! `define UART_LS_TFE 5 /* Transmit FIFO is empty */
! `define UART_LS_TE 6 /* Transmitter Empty indicator */
! `define UART_LS_EI 7 /* Error indicator */
! /* Modem Status Register bits */
! `define UART_MS_DCTS 0 /* Delta signals */
`define UART_MS_DDSR 1
`define UART_MS_TERI 2
`define UART_MS_DDCD 3
! `define UART_MS_CCTS 4 /* Complement signals */
`define UART_MS_CDSR 5
`define UART_MS_CRI 6
`define UART_MS_CDCD 7
! /* FIFO parameter defines */
`define UART_FIFO_WIDTH 8
`define UART_FIFO_DEPTH 16
***************
*** 238,246 ****
`define UART_FIFO_REC_WIDTH 11
! `define VERBOSE_WB 0 // All activity on the WISHBONE is recorded
! `define VERBOSE_LINE_STATUS 0 // Details about the lsr (line status register)
! `define FAST_TEST 1 // 64/1024 packets are sent
--- 238,246 ----
`define UART_FIFO_REC_WIDTH 11
! `define VERBOSE_WB 0 /* All activity on the WISHBONE is recorded */
! `define VERBOSE_LINE_STATUS 0 /* Details about the lsr (line status register) */
! `define FAST_TEST 1 /* 64/1024 packets are sent */
|