Минимальный пример
Вот пример того, что упомянул Цю.
В ОЗУ объем памяти является функцией размера слова и адреса.
Таким образом, если родительский модуль задает размер слова и адреса, он также не может указывать размер памяти.
module myram #(
parameter WORD_SIZE = 1,
parameter ADDR_SIZE = 1
) (
input wire [ADDR_SIZE-1:0] addr,
inout wire [WORD_SIZE-1:0] data,
// ...
);
localparam MEM_SIZE = WORD_SIZE * (1 << ADDR_SIZE);
// Use MEM_SIZE several times in block.
...
И на родительском модуле это нормально:
module myram_tb;
myram #(
.ADDR_SIZE(2),
.WORD_SIZE(2)
) top (
/* wires */
)
, но это должно быть ошибкой:
module myram_tb;
myram #(
.ADDR_SIZE(2),
.WORD_SIZE(2),
.MEM_SIZE(2)
) top (
/* wires */
)
iverilog
не не получается, и я считаю, что это ошибка: https://github.com/steveicarus/iverilog/issues/157
Incisive выдает ошибку, как и ожидалось.
preg_match("/^#[01-9A-F]{6}$/", $sColor)
В этом случае вам нужно добавить только два разделителя.
В perl вы можете написать что-то вроде
if ( s =~ /x.+y/ ) { print "match"; }Как видите, реальное регулярное выражение инкапсулировано в //. Если вы хотите установить параметр в регулярном выражении, вы помещаете его после второго /, например, переключение выражения на неадекватное по умолчанию /x.+y/U
preg_match("/^#[01-9A-F]{6}$/", $sColor) preg_match("!^#[01-9A-F]{6}$!", $sColor) preg_match("#^\#[01-9A-F]{6}$#", $sColor) // need to escape the # within the expression here preg_match("^#[01-9A-F]{6}$", $sColor), все равно pcre, лучше всего выбрать символ, который не появляется в выражении.
Между прочим, PHP поддерживает регулярные выражения как PCRE, так и POSIX. Вот раздел руководства PHP по регулярным выражениям POSIX, поэтому вам не нужно их преобразовывать: http://www.php.net/manual/en/book.regex.php
preg_match ("/ ^ # [01-9A-F] {6} $ / D", $ sColor)
Обратите внимание на модификатор D
. Люди все время об этом забывают. Без него $
разрешит последний символ новой строки. Строка типа "# 000000 \ n" пройдет. Это тонкое различие между POSIX и PCRE.
И, конечно же, [01-9]
можно переписать на [0-9]
.