Compare commits

..

No commits in common. "15a28aa7a778dbba5422f6f9e40e8c530fc0e31a" and "3e2fb9b94f9841fb930ff6ac5940865561d4e567" have entirely different histories.

3 changed files with 16 additions and 7 deletions

View file

@ -30,7 +30,6 @@ jobs:
lld \ lld \
pkg-config \ pkg-config \
python3 \ python3 \
python3-click \
tcl-dev \ tcl-dev \
z3 \ z3 \
zlib1g-dev \ zlib1g-dev \

View file

@ -419,8 +419,8 @@ pub struct FormalArgs {
pub mode: FormalMode, pub mode: FormalMode,
#[arg(long, default_value_t = Self::DEFAULT_DEPTH)] #[arg(long, default_value_t = Self::DEFAULT_DEPTH)]
pub depth: u64, pub depth: u64,
#[arg(long, default_value = "z3")] #[arg(long)]
pub solver: String, pub solver: Option<String>,
#[arg(long)] #[arg(long)]
pub smtbmc_extra_args: Vec<String>, pub smtbmc_extra_args: Vec<String>,
#[command(flatten)] #[command(flatten)]
@ -479,6 +479,18 @@ impl FormalArgs {
solver, solver,
_formal_adjust_args: _, _formal_adjust_args: _,
} = self; } = self;
struct OptArg<T>(Option<T>);
impl<T: fmt::Display> fmt::Display for OptArg<T> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
if let Some(v) = &self.0 {
f.write_str(" ")?;
v.fmt(f)
} else {
Ok(())
}
}
}
let space_solver = OptArg(solver.as_ref());
let smtbmc_options = smtbmc_extra_args.join(" "); let smtbmc_options = smtbmc_extra_args.join(" ");
let top_module = &output.verilog.firrtl.top_module; let top_module = &output.verilog.firrtl.top_module;
let mut retval = format!( let mut retval = format!(
@ -488,7 +500,7 @@ impl FormalArgs {
wait on\n\ wait on\n\
\n\ \n\
[engines]\n\ [engines]\n\
smtbmc {solver} -- -- {smtbmc_options}\n\ smtbmc{space_solver} -- -- {smtbmc_options}\n\
\n\ \n\
[script]\n" [script]\n"
); );

View file

@ -115,8 +115,6 @@ pub fn assert_formal<M>(
args.verilog.debug = true; args.verilog.debug = true;
args.mode = mode; args.mode = mode;
args.depth = depth; args.depth = depth;
if let Some(solver) = solver { args.solver = solver.map(String::from);
args.solver = solver.into();
}
args.run(module).expect("testing::assert_formal() failed"); args.run(module).expect("testing::assert_formal() failed");
} }