Перейти к содержанию
    

Как задать большущее hex-число?

Есть большой hex-вектор, который я задаю так:

        wire        [0:2623] pn_seq;
    assign pn_seq = {    316'h4DC2AF7BD8C3C9A1E76C9A090AF1C3114F07FCA2808E9462E9AD7B712D6F4AC8A59BB069CC5
0BF1,
                        316'h149927E6BB1C9FC8C18BB949B30CD09DDD749E704F57B41DEC7E7B176E12C5657432B51B0B8
12DF,
                        320'h0E14887E24D80C97F09374AD76270E58FE1774B2781D8D3821E393F2EA0FFD4D24DE20C05D0
BA170,
                        316'h3D10E52D61E013D837AA62D007CC2FD76D23A3E125BDE8A9A7C02A98B70251C556F6341EBDE
CB80,
                        316'h1AAD5D9FB8CBEA80BB619096527A8C475B3D8DB28AF8543A00EC3480DFF1E2CDA9F985B523B
8790,
                        320'h07AA5D0CE58D21B18631006617F6F769EB947F924EA5161EC2C0488B63ED7993BA8EF4E552F
A32FC,
                        320'h3F1BDB19923902BCBBE5DDABB824126E08459CA6CFA0267E5294A98C632569791E60EF659AE
E9518,
                        324'hCDF08D87833690C1B79183ED127E53360CD86514859A28B5494F51AA4882419A25A2D01A5F4
7AA273,
                        76'h01E79A5370CCB3E197F};

 

В VCS последовательность читается нормально, а ModelSim разбивает вектор по 32 разряда и вставляет 32-битные нулевые вектора между частями:

...01E0000000079A5370C00000000CB3E197F};

 

Уже попробовал и в 1 строку все написать, и сделать конкатенацию 32-битных векторов. Что-то пока глухо. Может кто подскажет решение?

 

Заранее спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробовать сделать кучу проводов и потом собрать их в кучу. А вообще это привет тем кто доказывает что моделсимы ничем не хуже каденсов синопсисов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробовать сделать кучу проводов и потом собрать их в кучу. А вообще это привет тем кто доказывает что моделсимы ничем не хуже каденсов синопсисов.

 

Да, такой вариант конечно же прокатит - просто так не хотелось создавать дополнительных 82 вектора. И generate тут не поможет, т.к. значения у всех веторов разные. Печалька с этим ModelSim'ом.

 

Спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а разбить большой вектор на 82 по 32 через quietly virtual signal не вариант?

 

Пример:

quietly virtual signal -install tb/uut_down { tb/uut_down/S00_AXI_AWADDR(31 downto 7)} awaddr_dn

#add wave -noupdate -format Logic -radix hexadecimal tb/uut_down/S00_AXI_AWADDR

add wave -noupdate -format Logic -radix unsigned tb/uut_down/awaddr_dn

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня были схожие неприятности с ncsim. решились так:

 

reg [127:0] vector;

 

initial

begin

 

vector = {{5'b00110},{5'b00110},{5'b00110},{5'b00101},{6'b000101},{6'b000101},{6'b000101},{6'b000101},{6'b000101},{6'b000101},{6'b000101},{6'b000101},{6'b000101},{6'b000101},{6'b000101},{6'b000101},{6'b000101},{6'b000110},{6'b000100},{6'b000011},{6'b000101},{6'b100000}};

 

end //initial

 

В Вашем случае: разбить на 32- или 64-битовые куски, а потом склеить {{}, {}, ...}.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня были схожие неприятности с ncsim. решились так:

 

reg [127:0] vector;

 

initial

begin

 

vector = {{5'b00110},{5'b00110},{5'b00110},{5'b00101},{6'b000101},{6'b000101},{6'b000101},{6'b000101},{6'b000101},{6'b000101},{6'b000101},{6'b000101},{6'b000101},{6'b000101},{6'b000101},{6'b000101},{6'b000101},{6'b000110},{6'b000100},{6'b000011},{6'b000101},{6'b100000}};

 

end //initial

 

В Вашем случае: разбить на 32- или 64-битовые куски, а потом склеить {{}, {}, ...}.

Так я пробовал - не помогло. Modelsim'у нужно 82 именованных вектора, чтоб он нули не пихал. В итоге вот такая борода получилась:

    assign                        
    pn_seq1 = 32'h4DC2AF7B,
    pn_seq2 = 32'hD8C3C9A1,
    pn_seq3 = 32'hE76C9A09,
    pn_seq4 = 32'h0AF1C311,
    pn_seq5 = 32'h4F07FCA2,
    pn_seq6 = 32'h808E9462,
    pn_seq7 = 32'hE9AD7B71,
    ...
    pn_seq81 = 32'h79A5370C,
    pn_seq82 = 32'hCB3E197F;                    
    
    assign pn_seq = {pn_seq1, pn_seq2, pn_seq3, pn_seq4, pn_seq5, pn_seq6, pn_seq7, pn_seq8, pn_seq9, pn_seq10,
                    pn_seq11, pn_seq12, pn_seq13, pn_seq14, pn_seq15, pn_seq16, pn_seq17, pn_seq18, pn_seq19, pn_seq20,
                    pn_seq21, pn_seq22, pn_seq23, pn_seq24, pn_seq25, pn_seq26, pn_seq27, pn_seq28, pn_seq29, pn_seq30,
                    pn_seq31, pn_seq32, pn_seq33, pn_seq34, pn_seq35, pn_seq36, pn_seq37, pn_seq38, pn_seq39, pn_seq40,
                    pn_seq41, pn_seq42, pn_seq43, pn_seq44, pn_seq45, pn_seq46, pn_seq47, pn_seq48, pn_seq49, pn_seq50,
                    pn_seq51, pn_seq52, pn_seq53, pn_seq54, pn_seq55, pn_seq56, pn_seq57, pn_seq58, pn_seq59, pn_seq60,
                    pn_seq61, pn_seq62, pn_seq63, pn_seq64, pn_seq65, pn_seq66, pn_seq67, pn_seq68, pn_seq69, pn_seq70,
                    pn_seq71, pn_seq72, pn_seq73, pn_seq74, pn_seq75, pn_seq76, pn_seq77, pn_seq78, pn_seq79, pn_seq80,
                    pn_seq81, pn_seq82};

Если б диплом писал, то был бы рад такому объемному коду :D А для работы хочется все покомпактнее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Видимо, "или песни, или танцы"..

 

Еще порекомендую считывать значения из файла и заполнять вектор (если для симуляции), но, думаю, что и этот вариант Вы рассматривали.

 

Modelsim'у нужно ...

для работы хочется ...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А если функцию написать в которой задать эти числа в виде обычной строки, а она эти строки переконвертирует в битовый вектор и возвратит его?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А у меня всё правильно работает, Modelsim SE 10.1c, тест использовал следующий:

module top;
wire        [0:2623] pn_seq;
    assign pn_seq = {   316'h4DC2AF7BD8C3C9A1E76C9A090AF1C3114F07FCA2808E9462E9AD7B712D6F4AC8A59BB069CC5
0BF1,
                        316'h149927E6BB1C9FC8C18BB949B30CD09DDD749E704F57B41DEC7E7B176E12C5657432B51B0B8
12DF,
                        320'h0E14887E24D80C97F09374AD76270E58FE1774B2781D8D3821E393F2EA0FFD4D24DE20C05D0
BA170,
                        316'h3D10E52D61E013D837AA62D007CC2FD76D23A3E125BDE8A9A7C02A98B70251C556F6341EBDE
CB80,
                        316'h1AAD5D9FB8CBEA80BB619096527A8C475B3D8DB28AF8543A00EC3480DFF1E2CDA9F985B523B
8790,
                        320'h07AA5D0CE58D21B18631006617F6F769EB947F924EA5161EC2C0488B63ED7993BA8EF4E552F
A32FC,
                        320'h3F1BDB19923902BCBBE5DDABB824126E08459CA6CFA0267E5294A98C632569791E60EF659AE
E9518,
                        324'hCDF08D87833690C1B79183ED127E53360CD86514859A28B5494F51AA4882419A25A2D01A5F4
7AA273,
                        76'h01E79A5370CCB3E197F};
initial begin
  #10;
  $display("%h", pn_seq);
  $stop(2);
end
endmodule

Или глюки начинаются, если включить это в модуль посложнее?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...