int main() { ulli number; uint new_exponent; printf(" ................\n"); printf("Enter 16 hexadeximal digits: "); scanf("%llx", &number); printf("Enter hexadeximal digits for new exponent: "); scanf("%x", &new_exponent); printf("\n"); printf("entered number (hex) %016llx\n", number); printf("number of exp bits are (dec) %16u\n", exp_bits(number)); printf("value of exponent is (hex) %16x\n", get_exponent(number)); printf("value of mantissa is (hex) %16llx\n", get_mantissa(number)); number = set_exponent(number, new_exponent); printf("\n"); printf("modified number (hex) %016llx\n", number); printf("number of exp bits are (dec) %16u\n", exp_bits(number)); printf("value of exponent is (hex) %16x\n", get_exponent(number)); printf("value of mantissa is (hex) %16llx\n", get_mantissa(number)); return 0; }
TEST_F(Test_module_inspector, get_bits) { sim::Simulation_engine engine("../lib/test/basic_fsm.cell", "test"); engine.setup(); auto intro = engine.inspect_module(""); auto state_bits = intro.get_bits("state"); ir::Bitset exp_bits(std::string("0000000000000000000000000000000000000000000000000000000000000001")); EXPECT_EQ(state_bits, exp_bits); exp_bits = ir::Bitset(std::string("0000000000000000000000000000000000000000000000000000000000000000")); auto ctr_bits = intro.get_bits("ctr"); EXPECT_EQ(exp_bits, ctr_bits); exp_bits = ir::Bitset(std::string("1")); auto reset_bits = intro.get_bits("reset"); EXPECT_EQ(exp_bits, reset_bits); exp_bits = ir::Bitset(std::string("0")); auto clk_bits = intro.get_bits("clk"); EXPECT_EQ(exp_bits, clk_bits); engine.teardown(); }
TEST_F(Test_module_inspector, get_element_bits) { sim::Simulation_engine engine("../lib/test/demo_fsm.cell", "demo::Fsm"); engine.setup(); auto intro = engine.inspect_module(""); //auto ctrl_bits = intro.get_bits("ctrl"); //ir::Bitset exp_bits(std::string( //"0100000000000000000000000000000000000000000000000000000000000000000" //)); //EXPECT_EQ(exp_bits, ctrl_bits); auto obj = intro.module()->objects.at("ctrl"); auto ctrl_elem_bits = intro.get_element_bits("ctrl"); ir::Bitset exp_bits(std::string("0")); auto idx = obj->type->elements.at("clk")->impl.struct_index; EXPECT_EQ(exp_bits, ctrl_elem_bits[idx]); exp_bits = ir::Bitset(std::string("1")); idx = obj->type->elements.at("reset")->impl.struct_index; EXPECT_EQ(exp_bits, ctrl_elem_bits[idx]); exp_bits = ir::Bitset(std::string( "0000000000000000000000000000000000000000000000000000000000000000" )); idx = obj->type->elements.at("op")->impl.struct_index; EXPECT_EQ(exp_bits, ctrl_elem_bits[idx]); exp_bits = ir::Bitset(std::string("0")); idx = obj->type->elements.at("en")->impl.struct_index; EXPECT_EQ(exp_bits, ctrl_elem_bits[idx]); auto named_elems = intro.get_named_element_bits("ctrl"); for(auto const& it : named_elems) { LOG4CXX_INFO(m_logger, "" << it.first << ": " << it.second); } ASSERT_EQ(4, named_elems.size()); exp_bits = ir::Bitset(std::string("0")); EXPECT_EQ(exp_bits, named_elems["clk"]); exp_bits = ir::Bitset(std::string("1")); EXPECT_EQ(exp_bits, named_elems["reset"]); exp_bits = ir::Bitset(std::string("0")); EXPECT_EQ(exp_bits, named_elems["en"]); exp_bits = ir::Bitset(std::string( "0000000000000000000000000000000000000000000000000000000000000000" )); EXPECT_EQ(exp_bits, named_elems["op"]); engine.teardown(); }