реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> импорт списка состояний из package
L47
сообщение Feb 12 2018, 11:49
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 28-05-14
Пользователь №: 81 793



Здравствуйте, подскажите пожалуйста:
Возможно ли импортировать из 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 выходит вышеуказанная проблема.
Go to the top of the page
 
+Quote Post
L47
сообщение Feb 13 2018, 04:27
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 28-05-14
Пользователь №: 81 793



видимо это сделать не возможно, решил пойти путем создания нескольких независимых package с полным импортом через "import package_name::*;"
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Feb 13 2018, 13:45
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 4 248
Регистрация: 17-02-06
Пользователь №: 14 454



а import package_name::enum_name::* не работает?
Go to the top of the page
 
+Quote Post
L47
сообщение Feb 14 2018, 05:00
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 28-05-14
Пользователь №: 81 793



Цитата
а 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
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th June 2018 - 05:20
Рейтинг@Mail.ru


Страница сгенерированна за 0.00864 секунд с 7
ELECTRONIX ©2004-2016