#pragma once
class vm1g_plm
{
		//внутренние переменные
		bool p[250];    //wire [249:2]
		bool pl[34];    //wire [33:0]

#ifdef _WIN64
		uint64_t m_plm[34][4];
#else
		uint32_t m_plm[34][8];
#endif
		uint32_t m_nPrevAi;
		/*
		для cmp нужен массив игнорируемых битов и массив масок
		*/
		static const uint32_t ignore_bits[250];
		static const uint32_t mask_bits[250];

		inline bool cmp(uint32_t ai, uint32_t mi, uint32_t ig)
		{
			/*
			casex(ai)
			mi:      cmp = 1'b1;
			default: cmp = 1'b0;
			endcase
			если ai игнорируя значения битов со статусом x совпадает с mi
			то выход 1, иначе 0
			*/
			return ((ai & ig) == mi);
		}
	public:
		vm1g_plm();
		~vm1g_plm();
		void eval(uint32_t ir, uint32_t mr, uint64_t &sp);

};

