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

systemverilog structure

Здравствуйте.

В модуле на systemverilog есть структура, объявленная в package:

typedef struct packed {
    logic wen_fifo;
    logic [31:0] data_fifo_in;
    logic rd_fifo;
    logic [31:0] data_fifo_out;
    logic afull;
    logic fempty;
    logic wen_queue;
    logic rd_queue;
    logic qempty;} STR_FIFO;

В симуляции все работает.

В quartus 17.1 в signaltap я вижу, что структура почему-то не заполняется, хотя fsm отрабатывает верно, и ничего не оптимизированно.

На systemverilog пишу недавно.

Может я что-то упустил.

Благодарю.

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


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

Приветствую!

 

2 hours ago, Kostochkin said:

В quartus 17.1 в signaltap я вижу, что структура почему-то не заполняется, хотя fsm отрабатывает верно, и ничего не оптимизированно.
...
Может я что-то упустил.

И не только в Quartus - тут тоже не видно что структура заполняется. :wink2:
Упустили как минимум  описание того как именно вы работаете со структурой. :scratch_one-s_head:

 

Удачи! Rob.

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


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

Вот пример

`timescale 1ns / 1ps   

package pack_rx;

typedef struct packed {
	logic [31:0] m0;
	logic [15:0] m1;
	logic [7:0] m2;} STR_A;	
	
endpackage : pack_rx
  
 
module rx_t

	import pack_rx::STR_A;

 #()
	(
		input logic clk,								    
		input logic data_vd,
		input logic [15:0] data,
		output logic data_out
     );	

	STR_A STR_PAR; 

	logic [7:0] state;
	logic r_data_out;
	
	initial
	begin
		r_data_out = 1'b0;
		state = 0;
	end	
	
	always @(posedge clk) begin
		if (data_vd) begin
			state <= state + 1;
			case (state)
				2:begin
					STR_PAR.m0[31:16] <= data;        
				end
				3:begin
					STR_PAR.m0[15:0] <= data;
				end
				4:begin
					STR_PAR.m1 <= data;
				end
				8:begin
					STR_PAR.m2 <= data[15:8];
				end
				default:;
			endcase
		end
		else begin
			if ((STR_PAR.m0 == 32'h00001100) & (STR_PAR.m2 == 8'h05))
				r_data_out <= 1'b1;
			else r_data_out <= 1'b0;
		end
			
	end
	
	assign data_out = r_data_out;
	
endmodule
  

 

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


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

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

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

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

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

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

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

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

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

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