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

импорт списка состояний из package

Здравствуйте, подскажите пожалуйста:

Возможно ли импортировать из package(Systemverilog) список состояний enum одним разом?

package pck;
enum int unsigned {
    a,
    b,
    c
    } state_t;
endpackage

module m1
    import 
    pck:: state_t,
    pck:: a, //как исключить эту запись?
    pck:: b, //как исключить эту запись?
    pck:: c; //как исключить эту запись?
    (
    input logic clk
    );
state_t state;
always_ff@(posedge clk)
    begin
    case (state)
        a:out <= "A";
        b:out <= "B";
        c:out <= "C";
        default: out <= "D";
        endcase
    end

endmodule

 

Причина: можно использовать запись в виде "import:*;" но в этом случае если модуль большой то не сразу понятно какие параметры задействованы, поэтому хотелось бы импортировать поименно, но с enum выходит вышеуказанная проблема.

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


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

видимо это сделать не возможно, решил пойти путем создания нескольких независимых package с полным импортом через "import package_name::*;"

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


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

а import package_name::enum_name::* не работает?

Нет, не работает:

package_for_fsm.sv(56): near "::": syntax error, unexpected ::, expecting ';' or ','

 

`timescale 1ns / 1ps
module top
        (
        );
//===========================================/
//GEN
//===========================================/
logic clk = 'b0;
always #10 clk = ~clk;
//===========================================/
//TEST UNIT
//===========================================/
logic [7:0] out;
m1 m1_inst(
    .clk(clk),
    .out(out)    
    );  
endmodule

//===========================================/
//PACKAGE
//===========================================/
package pck;
typedef enum int unsigned {
    a,
    b,
    c
    } state_t;
endpackage

//===========================================/
//TEST_MODULE
//===========================================/
module m1
    import 
//   pck:: state_t,
    pck:: state_t::*;
    
/*     pck:: a, //как исключить эту запись?
    pck:: b, //как исключить эту запись?
    pck:: c; //как исключить эту запись? */
    (
    input logic clk,
    output logic [7:0] out = 'b0
    );
state_t state;

always_ff@(posedge clk)
    begin
    case (state)
        a:
            begin
            state <= b;
            out <= "A";
            end
        b:
            begin
            state <= c;
            out <= "B";
            end
        c:
            begin
            state <= a;
            out <= "C";
            end
        default: 
            begin
            state <= a;
            out <= "D";
            end
        endcase
    end

endmodule

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


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

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

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

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

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

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

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

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

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

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