murmel1 0 18 декабря, 2010 Опубликовано 18 декабря, 2010 · Жалоба Граждане, будьте бдительны ! Quartus 9.1 После внесения некоторых изменений в проект '1 '0 (заполнение вектора единицами и нулями соответственно) стало работать неправильно: вместо 1-1-1-...-1-1-1 становится NC-NC-...-NC-1 (все равно, что приравнять вектору 1'b1), что далее трактуется, как 0-0-0-...-0-0-0-1. Это видно в RTL Viewer. '0 - в RTL Viewer видно, что чтаршие биты считаются неподключенными, хотя результат в итоге получается тот же, что и должен быть (весь вектор в 0). Самое удивительное, что раньше именно в этом проекте работало правильно. После какого действия сломалось - сказать трудно, т.к. эту часть функционала я несколько ревизий не проверял. Сам проект я выкладывать не буду, т. к. там только исходников на 5 МБ. В принципе, легко переписывается в виде N'b111...111. Кто нибудь с таким сталкивался ? Судя по всему, этим "синтаксическим сахаром" из SV пользоваться в 9.1 пока еще рано. А что в Q10 ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yura-w 0 20 декабря, 2010 Опубликовано 20 декабря, 2010 · Жалоба Сам проект я выкладывать не буду, т. к. там только исходников на 5 МБ. а весь и не надо, достаточно только часть, в которой используете назначение. Например: module test ( input clk, input [15:0] d, output logic [31:0] q ); wire [31:0] buf_d = '1; always @( posedge clk)begin q <= (buf_d | d); end endmodule работает правильно и в10sp1 и 10.1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IL-76 0 20 декабря, 2010 Опубликовано 20 декабря, 2010 · Жалоба Еще попробуйте записывать такие вектора как {N{1'b0}} или {N{1'b1}} - это работает. Вообще есть ощущение, что Quartus несколько вольно обращается с некоторыми конструкциями SV. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
slash_spb 0 20 декабря, 2010 Опубликовано 20 декабря, 2010 · Жалоба Было замечено что конструкция типа '1, '0 не работает в объявление инстенсев(Q10.0). Вместо всех 1, выставляется только одна. Пример: module sum ( input clk, input [31:0] data_a, input [31:0] data_b, output [31:0] sum ); always @(posedge clk) sum <= data_a + data_b; endmodule module test( input clk, input [31:0] data_a, input [31:0] data_b, output [31:0] sum ); sum sum1( .clk(clk), .data_a(data_a), .data_b('1), .sum(sum) ); endmodule Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
head_hunter 0 20 декабря, 2010 Опубликовано 20 декабря, 2010 (изменено) · Жалоба Было замечено что конструкция типа '1, '0 не работает в объявление инстенсев(Q10.0). Вместо всех 1, выставляется только одна. Может так и должно быть по стандарту? Изменено 20 декабря, 2010 пользователем Head_Hunter Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 21 декабря, 2010 Опубликовано 21 декабря, 2010 · Жалоба Может так и должно быть по стандарту? Нет, не должно. '1 должна превратиться во все 11111111... на всю длину слова. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться