From c03f62e8fa1cca3f80a6b8332cce90c1fc912b89 Mon Sep 17 00:00:00 2001 From: Guojie Luo Date: Sun, 24 Apr 2022 11:26:52 +0800 Subject: [PATCH] Update SyntaxTable --- src/cst/context.rs | 4 +++- src/cst/mod.rs | 3 ++- src/cst/nonblocking_assignment_statement.rs | 3 ++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/cst/context.rs b/src/cst/context.rs index 754a334..8491930 100644 --- a/src/cst/context.rs +++ b/src/cst/context.rs @@ -2,7 +2,7 @@ use json::JsonValue; use linked_hash_map::LinkedHashMap; use linked_hash_set::LinkedHashSet; use llhd::{ - ir::{Arg, Block, Module, Signature, UnitBuilder, UnitData, UnitKind, UnitName, Value}, + ir::{Arg, Block, Inst, Module, Signature, UnitBuilder, UnitData, UnitKind, UnitName, Value}, ty::Type, value::IntValue, }; @@ -32,6 +32,7 @@ pub struct UnitContext { pub struct SyntaxTable<'a> { pub root: &'a JsonValue, pub values: HashMap, + pub insts: HashMap, } pub struct SymbolInfo { @@ -138,6 +139,7 @@ impl<'a> SyntaxTable<'a> { Self { root: json, values: HashMap::new(), + insts: HashMap::new(), } } } diff --git a/src/cst/mod.rs b/src/cst/mod.rs index 8d9a593..be193d9 100644 --- a/src/cst/mod.rs +++ b/src/cst/mod.rs @@ -17,7 +17,7 @@ mod tools; use always_statement::AlwaysStatement; use case_statement::CaseStatement; use conditional_statement::ConditionalStatement; -use context::{ModuleContext, SymbolInfo, SymbolKind, SyntaxTable, UnitContext}; +use context::{ModuleContext, SymbolInfo, SymbolKind, UnitContext}; use expression::Expression; use module_declaration::ModuleDeclaration; use net_variable_assignment::NetVariableAssignment; @@ -27,6 +27,7 @@ use seq_block::SeqBlock; use statement::Statement; use symbol_declaration::SymbolDeclaration; +pub use context::SyntaxTable; pub use description_list::DescriptionList; pub use tags::Tag; pub use tools::{CodeReporter, Tools}; diff --git a/src/cst/nonblocking_assignment_statement.rs b/src/cst/nonblocking_assignment_statement.rs index 02e18ad..fcf9ed6 100644 --- a/src/cst/nonblocking_assignment_statement.rs +++ b/src/cst/nonblocking_assignment_statement.rs @@ -63,11 +63,12 @@ impl NonblockingAssignmentStatement { builder.append_to(bb_head); let delta_time = builder.ins().const_time(TimeValue::new(num::zero(), 1, 0)); - builder.ins().drv( + let inst = builder.ins().drv( unit_ctx.raw_name_to_value[lvalue_name], opt_expr.unwrap(), delta_time, ); + context.syntax_table.insts.insert(inst, json); Some(bb_head) } else {