Пример #1
0
int main(int argc, char** argv) {
	Verilated::commandArgs(argc, argv);
	if (argc != 1 && (argc != 3 || strlen(argv[1]) != 4 || strlen(argv[2]) != 6)) {
		cerr << "usage: " << argv[0] << " [HHMM ddmmyy]" << endl;
		exit(1);
	}

	const char *s_keypad = "";
	static char s_gps[128];
	const char *s_HHMM   = argc == 3 ? argv[1] : NULL;
	const char *s_ddmmyy = argc == 3 ? argv[2] : NULL;

	build_gps_str(s_gps, sizeof(s_gps), s_HHMM, s_ddmmyy);

	create_chip(NULL);
	uart_input_str(s_keypad, s_gps);
	wait_processing();

	static char regs[reg_num];
	reg_snapshot(regs);

	static char buf[128];
	extract_hash_regs(buf, sizeof(buf), regs);
	cout << buf << endl;

	finish_chip();
	return 0;
}
Пример #2
0
int main(int argc, char** argv) {
	Verilated::commandArgs(argc, argv);
	if (argc != 1 && (argc != 3 || strlen(argv[1]) != 4 || strlen(argv[2]) != 6)) {
		cerr << "usage: " << argv[0] << " [HHMM ddmmyy]" << endl;
		exit(1);
	}

	const char *s_keypad = "";
	static char s_gps[128];
	const char *s_HHMM   = argc == 3 ? argv[1] : NULL;
	const char *s_ddmmyy = argc == 3 ? argv[2] : NULL;

	build_gps_str(s_gps, sizeof(s_gps), s_HHMM, s_ddmmyy);

	create_chip(NULL);
	uart_input_str(s_keypad, s_gps);
	wait_processing();

	static char regs[reg_num];
	reg_snapshot(regs);

	FILE *fp = fopen("problem.spec", "w");
	if (fp == NULL) {
		perror("can't write to problem.spec");
		return 1;
	}
	// add constraint
	fprintf(fp, "=%s\t1\n", lock_reg_input_net);
	// add incognita
	set<int> exclude_reg;
	for (int i = 0; i < 256; i++) {
		for (int j = 0; keypad_regs[i][j] != -1; j++) {
			const int kreg = keypad_regs[i][j];
			exclude_reg.insert(kreg);
			if (strcmp(reg_en[kreg], "1'b1"))
				fprintf(fp, "%s\t?\n", reg_names[kreg]);
		}
	}
	// add register values
	for (int i = 0; i < reg_num; i++) {
		if (exclude_reg.find(i) == exclude_reg.end())
			fprintf(fp, "%s\t%d\n", reg_names[i], regs[i]);
	}
	fclose(fp);

	const int ret =
		system("./solve_circuit.py chip.v problem.spec");

	finish_chip();
	return 0;
}
Пример #3
0
/*ARGSUSED*/
static int
create_chips(topo_mod_t *mod, tnode_t *pnode, const char *name,
    topo_instance_t min, topo_instance_t max, void *arg, nvlist_t *auth,
    int mc_offchip)
{
	fmd_agent_hdl_t *hdl;
	nvlist_t **cpus;
	int nerr = 0;
	uint_t i, ncpu;

	if (strcmp(name, CHIP_NODE_NAME) != 0)
		return (0);

	if ((hdl = fmd_agent_open(FMD_AGENT_VERSION)) == NULL)
		return (-1);
	if (fmd_agent_physcpu_info(hdl, &cpus, &ncpu) != 0) {
		whinge(mod, NULL, "create_chip: fmd_agent_physcpu_info "
		    "failed: %s\n", fmd_agent_errmsg(hdl));
		fmd_agent_close(hdl);
		return (-1);
	}
	fmd_agent_close(hdl);

	for (i = 0; i < ncpu; i++) {
		nerr -= create_chip(mod, pnode, min, max, cpus[i], auth,
		    mc_offchip);
		nvlist_free(cpus[i]);
	}
	umem_free(cpus, sizeof (nvlist_t *) * ncpu);

	if (nerr == 0) {
		return (0);
	} else {
		(void) topo_mod_seterrno(mod, EMOD_PARTIAL_ENUM);
		return (-1);
	}
}