# Copyright (c) 2018-2021, Carnegie Mellon University
# See LICENSE for details

sort_1 := function()
	HDLSynthesize_no_brams(sortAlg2(512, 1, [9, 8, 7, 6, 5, 4, 3, 2]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_512_1_9_8_7_6_5_4_3_2");
	HDLSynthesize_no_brams(sortAlg5(512, 1, [9, 8, 7, 6, 5, 4, 3, 2]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_512_1_9_8_7_6_5_4_3_2");
	HDLSynthesize_no_brams(sortAlg2(512, 1, [9, 4, 7, 3, 5, 2, 3, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_512_1_9_4_7_3_5_2_3_1");
	HDLSynthesize_no_brams(sortAlg5(512, 1, [9, 4, 7, 3, 5, 2, 3, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_512_1_9_4_7_3_5_2_3_1");
	HDLSynthesize_no_brams(sortAlg2(512, 1, [3, 4, 7, 2, 5, 2, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_512_1_3_4_7_2_5_2_1_1");
	HDLSynthesize_no_brams(sortAlg5(512, 1, [3, 4, 7, 2, 5, 2, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_512_1_3_4_7_2_5_2_1_1");
	HDLSynthesize_no_brams(sortAlg2(512, 1, [3, 2, 7, 2, 5, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_512_1_3_2_7_2_5_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(512, 1, [3, 2, 7, 2, 5, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_512_1_3_2_7_2_5_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(512, 1, [3, 2, 7, 2, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_512_1_3_2_7_2_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(512, 1, [3, 2, 7, 2, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_512_1_3_2_7_2_1_1_1_1");

end;

sort_2 := function()
	HDLSynthesize_no_brams(sortAlg2(512, 1, [3, 2, 7, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_512_1_3_2_7_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(512, 1, [3, 2, 7, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_512_1_3_2_7_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(512, 1, [3, 2, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_512_1_3_2_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(512, 1, [3, 2, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_512_1_3_2_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(512, 1, [3, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_512_1_3_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(512, 1, [3, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_512_1_3_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(512, 1, [1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_512_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(512, 1, [1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_512_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(512, 16, [9, 8, 7, 6, 5, 4, 3, 2]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_512_16_9_8_7_6_5_4_3_2");
	HDLSynthesize_no_brams(sortAlg5(512, 16, [9, 8, 7, 6, 5, 4, 3, 2]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_512_16_9_8_7_6_5_4_3_2");

end;

sort_3 := function()
	HDLSynthesize_no_brams(sortAlg2(512, 16, [9, 4, 7, 3, 5, 2, 3, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_512_16_9_4_7_3_5_2_3_1");
	HDLSynthesize_no_brams(sortAlg5(512, 16, [9, 4, 7, 3, 5, 2, 3, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_512_16_9_4_7_3_5_2_3_1");
	HDLSynthesize_no_brams(sortAlg2(512, 16, [3, 4, 7, 2, 5, 2, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_512_16_3_4_7_2_5_2_1_1");
	HDLSynthesize_no_brams(sortAlg5(512, 16, [3, 4, 7, 2, 5, 2, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_512_16_3_4_7_2_5_2_1_1");
	HDLSynthesize_no_brams(sortAlg2(512, 16, [3, 2, 7, 2, 5, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_512_16_3_2_7_2_5_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(512, 16, [3, 2, 7, 2, 5, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_512_16_3_2_7_2_5_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(512, 16, [3, 2, 7, 2, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_512_16_3_2_7_2_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(512, 16, [3, 2, 7, 2, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_512_16_3_2_7_2_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(512, 16, [3, 2, 7, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_512_16_3_2_7_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(512, 16, [3, 2, 7, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_512_16_3_2_7_1_1_1_1_1");

end;

sort_4 := function()
	HDLSynthesize_no_brams(sortAlg2(512, 16, [3, 2, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_512_16_3_2_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(512, 16, [3, 2, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_512_16_3_2_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(512, 16, [3, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_512_16_3_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(512, 16, [3, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_512_16_3_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(512, 16, [1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_512_16_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(512, 16, [1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_512_16_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(512, 32, [9, 8, 7, 6, 5, 4, 3, 2]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_512_32_9_8_7_6_5_4_3_2");
	HDLSynthesize_no_brams(sortAlg5(512, 32, [9, 8, 7, 6, 5, 4, 3, 2]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_512_32_9_8_7_6_5_4_3_2");
	HDLSynthesize_no_brams(sortAlg2(512, 32, [9, 4, 7, 3, 5, 2, 3, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_512_32_9_4_7_3_5_2_3_1");
	HDLSynthesize_no_brams(sortAlg5(512, 32, [9, 4, 7, 3, 5, 2, 3, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_512_32_9_4_7_3_5_2_3_1");

end;

sort_5 := function()
	HDLSynthesize_no_brams(sortAlg2(512, 32, [3, 4, 7, 2, 5, 2, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_512_32_3_4_7_2_5_2_1_1");
	HDLSynthesize_no_brams(sortAlg5(512, 32, [3, 4, 7, 2, 5, 2, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_512_32_3_4_7_2_5_2_1_1");
	HDLSynthesize_no_brams(sortAlg2(512, 32, [3, 2, 7, 2, 5, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_512_32_3_2_7_2_5_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(512, 32, [3, 2, 7, 2, 5, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_512_32_3_2_7_2_5_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(512, 32, [3, 2, 7, 2, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_512_32_3_2_7_2_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(512, 32, [3, 2, 7, 2, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_512_32_3_2_7_2_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(512, 32, [3, 2, 7, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_512_32_3_2_7_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(512, 32, [3, 2, 7, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_512_32_3_2_7_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(512, 32, [3, 2, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_512_32_3_2_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(512, 32, [3, 2, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_512_32_3_2_1_1_1_1_1_1");

end;

sort_6 := function()
	HDLSynthesize_no_brams(sortAlg2(512, 32, [3, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_512_32_3_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(512, 32, [3, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_512_32_3_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(512, 32, [1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_512_32_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(512, 32, [1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_512_32_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(512, 64, [9, 8, 7, 6, 5, 4, 3, 2]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_512_64_9_8_7_6_5_4_3_2");
	HDLSynthesize_no_brams(sortAlg5(512, 64, [9, 8, 7, 6, 5, 4, 3, 2]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_512_64_9_8_7_6_5_4_3_2");
	HDLSynthesize_no_brams(sortAlg2(512, 64, [9, 4, 7, 3, 5, 2, 3, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_512_64_9_4_7_3_5_2_3_1");
	HDLSynthesize_no_brams(sortAlg5(512, 64, [9, 4, 7, 3, 5, 2, 3, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_512_64_9_4_7_3_5_2_3_1");
	HDLSynthesize_no_brams(sortAlg2(512, 64, [3, 4, 7, 2, 5, 2, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_512_64_3_4_7_2_5_2_1_1");
	HDLSynthesize_no_brams(sortAlg5(512, 64, [3, 4, 7, 2, 5, 2, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_512_64_3_4_7_2_5_2_1_1");

end;

sort_7 := function()
	HDLSynthesize_no_brams(sortAlg2(512, 64, [3, 2, 7, 2, 5, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_512_64_3_2_7_2_5_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(512, 64, [3, 2, 7, 2, 5, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_512_64_3_2_7_2_5_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(512, 64, [3, 2, 7, 2, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_512_64_3_2_7_2_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(512, 64, [3, 2, 7, 2, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_512_64_3_2_7_2_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(512, 64, [3, 2, 7, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_512_64_3_2_7_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(512, 64, [3, 2, 7, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_512_64_3_2_7_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(512, 64, [3, 2, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_512_64_3_2_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(512, 64, [3, 2, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_512_64_3_2_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(512, 64, [3, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_512_64_3_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(512, 64, [3, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_512_64_3_1_1_1_1_1_1_1");

end;

sort_8 := function()
	HDLSynthesize_no_brams(sortAlg2(512, 64, [1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_512_64_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(512, 64, [1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_512_64_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(512, 128, [9, 8, 7, 6, 5, 4, 3, 2]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_512_128_9_8_7_6_5_4_3_2");
	HDLSynthesize_no_brams(sortAlg5(512, 128, [9, 8, 7, 6, 5, 4, 3, 2]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_512_128_9_8_7_6_5_4_3_2");
	HDLSynthesize_no_brams(sortAlg2(512, 128, [9, 4, 7, 3, 5, 2, 3, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_512_128_9_4_7_3_5_2_3_1");
	HDLSynthesize_no_brams(sortAlg5(512, 128, [9, 4, 7, 3, 5, 2, 3, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_512_128_9_4_7_3_5_2_3_1");
	HDLSynthesize_no_brams(sortAlg2(512, 128, [3, 4, 7, 2, 5, 2, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_512_128_3_4_7_2_5_2_1_1");
	HDLSynthesize_no_brams(sortAlg5(512, 128, [3, 4, 7, 2, 5, 2, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_512_128_3_4_7_2_5_2_1_1");
	HDLSynthesize_no_brams(sortAlg2(512, 128, [3, 2, 7, 2, 5, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_512_128_3_2_7_2_5_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(512, 128, [3, 2, 7, 2, 5, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_512_128_3_2_7_2_5_1_1_1");

end;

sort_9 := function()
	HDLSynthesize_no_brams(sortAlg2(512, 128, [3, 2, 7, 2, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_512_128_3_2_7_2_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(512, 128, [3, 2, 7, 2, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_512_128_3_2_7_2_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(512, 128, [3, 2, 7, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_512_128_3_2_7_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(512, 128, [3, 2, 7, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_512_128_3_2_7_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(512, 128, [3, 2, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_512_128_3_2_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(512, 128, [3, 2, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_512_128_3_2_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(512, 128, [3, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_512_128_3_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(512, 128, [3, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_512_128_3_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(512, 128, [1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_512_128_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(512, 128, [1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_512_128_1_1_1_1_1_1_1_1");

end;

sort_10 := function()
	HDLSynthesize_no_brams(sortAlg4(512, 128, 1), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_512_128_1");
	HDLSynthesize_no_brams(sortAlg4(512, 128, 3), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_512_128_3");
	HDLSynthesize_no_brams(sortAlg4(512, 128, 9), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_512_128_9");
	HDLSynthesize_no_brams(sortAlg4(512, 128, 27), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_512_128_27");
	HDLSynthesize_no_brams(sortAlg4(512, 128, 81), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_512_128_81");
	HDLSynthesize_no_brams(sortAlg6(1024, 1), 1, 0, 16, 350, 1,"sortAlg6_noBRAMs_1024_1");
	HDLSynthesize_no_brams(sortAlg1(1024, 2), 1, 0, 16, 350, 1,"sortAlg1_noBRAMs_1024_2");
	HDLSynthesize_no_brams(sortAlg6(1024, 2), 1, 0, 16, 350, 1,"sortAlg6_noBRAMs_1024_2");
	HDLSynthesize_no_brams(sortAlg1(1024, 4), 1, 0, 16, 350, 1,"sortAlg1_noBRAMs_1024_4");
	HDLSynthesize_no_brams(sortAlg6(1024, 4), 1, 0, 16, 350, 1,"sortAlg6_noBRAMs_1024_4");

end;

sort_11 := function()
	HDLSynthesize_no_brams(sortAlg1(1024, 8), 1, 0, 16, 350, 1,"sortAlg1_noBRAMs_1024_8");
	HDLSynthesize_no_brams(sortAlg6(1024, 8), 1, 0, 16, 350, 1,"sortAlg6_noBRAMs_1024_8");
	HDLSynthesize_no_brams(sortAlg1(1024, 16), 1, 0, 16, 350, 1,"sortAlg1_noBRAMs_1024_16");
	HDLSynthesize_no_brams(sortAlg6(1024, 16), 1, 0, 16, 350, 1,"sortAlg6_noBRAMs_1024_16");
	HDLSynthesize_no_brams(sortAlg1(1024, 32), 1, 0, 16, 350, 1,"sortAlg1_noBRAMs_1024_32");
	HDLSynthesize_no_brams(sortAlg6(1024, 32), 1, 0, 16, 350, 1,"sortAlg6_noBRAMs_1024_32");
	HDLSynthesize_no_brams(sortAlg1(1024, 64), 1, 0, 16, 350, 1,"sortAlg1_noBRAMs_1024_64");
	HDLSynthesize_no_brams(sortAlg6(1024, 64), 1, 0, 16, 350, 1,"sortAlg6_noBRAMs_1024_64");
	HDLSynthesize_no_brams(sortAlg1(1024, 128), 1, 0, 16, 350, 1,"sortAlg1_noBRAMs_1024_128");
	HDLSynthesize_no_brams(sortAlg6(1024, 128), 1, 0, 16, 350, 1,"sortAlg6_noBRAMs_1024_128");

end;

sort_12 := function()
	HDLSynthesize_no_brams(sortAlg2(1024, 1, [10, 9, 8, 7, 6, 5, 4, 3, 2]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_1_10_9_8_7_6_5_4_3_2");
	HDLSynthesize_no_brams(sortAlg5(1024, 1, [10, 9, 8, 7, 6, 5, 4, 3, 2]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_1_10_9_8_7_6_5_4_3_2");
	HDLSynthesize_no_brams(sortAlg2(1024, 1, [5, 9, 4, 7, 3, 5, 2, 3, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_1_5_9_4_7_3_5_2_3_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 1, [5, 9, 4, 7, 3, 5, 2, 3, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_1_5_9_4_7_3_5_2_3_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 1, [5, 3, 4, 7, 2, 5, 2, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_1_5_3_4_7_2_5_2_1_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 1, [5, 3, 4, 7, 2, 5, 2, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_1_5_3_4_7_2_5_2_1_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 1, [5, 3, 2, 7, 2, 5, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_1_5_3_2_7_2_5_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 1, [5, 3, 2, 7, 2, 5, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_1_5_3_2_7_2_5_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 1, [2, 3, 2, 7, 2, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_1_2_3_2_7_2_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 1, [2, 3, 2, 7, 2, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_1_2_3_2_7_2_1_1_1_1");

end;

sort_13 := function()
	HDLSynthesize_no_brams(sortAlg2(1024, 1, [2, 3, 2, 7, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_1_2_3_2_7_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 1, [2, 3, 2, 7, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_1_2_3_2_7_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 1, [2, 3, 2, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_1_2_3_2_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 1, [2, 3, 2, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_1_2_3_2_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 1, [2, 3, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_1_2_3_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 1, [2, 3, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_1_2_3_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 1, [2, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_1_2_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 1, [2, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_1_2_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 1, [1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_1_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 1, [1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_1_1_1_1_1_1_1_1_1_1");

end;

sort_14 := function()
	HDLSynthesize_no_brams(sortAlg2(1024, 2, [10, 9, 8, 7, 6, 5, 4, 3, 2]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_2_10_9_8_7_6_5_4_3_2");
	HDLSynthesize_no_brams(sortAlg5(1024, 2, [10, 9, 8, 7, 6, 5, 4, 3, 2]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_2_10_9_8_7_6_5_4_3_2");
	HDLSynthesize_no_brams(sortAlg2(1024, 2, [5, 9, 4, 7, 3, 5, 2, 3, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_2_5_9_4_7_3_5_2_3_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 2, [5, 9, 4, 7, 3, 5, 2, 3, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_2_5_9_4_7_3_5_2_3_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 2, [5, 3, 4, 7, 2, 5, 2, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_2_5_3_4_7_2_5_2_1_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 2, [5, 3, 4, 7, 2, 5, 2, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_2_5_3_4_7_2_5_2_1_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 2, [5, 3, 2, 7, 2, 5, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_2_5_3_2_7_2_5_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 2, [5, 3, 2, 7, 2, 5, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_2_5_3_2_7_2_5_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 2, [2, 3, 2, 7, 2, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_2_2_3_2_7_2_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 2, [2, 3, 2, 7, 2, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_2_2_3_2_7_2_1_1_1_1");

end;

sort_15 := function()
	HDLSynthesize_no_brams(sortAlg2(1024, 2, [2, 3, 2, 7, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_2_2_3_2_7_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 2, [2, 3, 2, 7, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_2_2_3_2_7_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 2, [2, 3, 2, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_2_2_3_2_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 2, [2, 3, 2, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_2_2_3_2_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 2, [2, 3, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_2_2_3_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 2, [2, 3, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_2_2_3_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 2, [2, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_2_2_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 2, [2, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_2_2_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 2, [1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_2_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 2, [1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_2_1_1_1_1_1_1_1_1_1");

end;

sort_16 := function()
	HDLSynthesize_no_brams(sortAlg2(1024, 4, [10, 9, 8, 7, 6, 5, 4, 3, 2]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_4_10_9_8_7_6_5_4_3_2");
	HDLSynthesize_no_brams(sortAlg5(1024, 4, [10, 9, 8, 7, 6, 5, 4, 3, 2]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_4_10_9_8_7_6_5_4_3_2");
	HDLSynthesize_no_brams(sortAlg2(1024, 4, [5, 9, 4, 7, 3, 5, 2, 3, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_4_5_9_4_7_3_5_2_3_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 4, [5, 9, 4, 7, 3, 5, 2, 3, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_4_5_9_4_7_3_5_2_3_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 4, [5, 3, 4, 7, 2, 5, 2, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_4_5_3_4_7_2_5_2_1_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 4, [5, 3, 4, 7, 2, 5, 2, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_4_5_3_4_7_2_5_2_1_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 4, [5, 3, 2, 7, 2, 5, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_4_5_3_2_7_2_5_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 4, [5, 3, 2, 7, 2, 5, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_4_5_3_2_7_2_5_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 4, [2, 3, 2, 7, 2, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_4_2_3_2_7_2_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 4, [2, 3, 2, 7, 2, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_4_2_3_2_7_2_1_1_1_1");

end;

sort_17 := function()
	HDLSynthesize_no_brams(sortAlg2(1024, 4, [2, 3, 2, 7, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_4_2_3_2_7_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 4, [2, 3, 2, 7, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_4_2_3_2_7_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 4, [2, 3, 2, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_4_2_3_2_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 4, [2, 3, 2, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_4_2_3_2_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 4, [2, 3, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_4_2_3_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 4, [2, 3, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_4_2_3_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 4, [2, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_4_2_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 4, [2, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_4_2_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 4, [1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_4_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 4, [1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_4_1_1_1_1_1_1_1_1_1");

end;

sort_18 := function()
	HDLSynthesize_no_brams(sortAlg5(1024, 16, [2, 3, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_16_2_3_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 16, [2, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_16_2_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 16, [2, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_16_2_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 16, [1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_16_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 16, [1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_16_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 32, [10, 9, 8, 7, 6, 5, 4, 3, 2]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_32_10_9_8_7_6_5_4_3_2");
	HDLSynthesize_no_brams(sortAlg5(1024, 32, [10, 9, 8, 7, 6, 5, 4, 3, 2]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_32_10_9_8_7_6_5_4_3_2");
	HDLSynthesize_no_brams(sortAlg2(1024, 32, [5, 9, 4, 7, 3, 5, 2, 3, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_32_5_9_4_7_3_5_2_3_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 32, [5, 9, 4, 7, 3, 5, 2, 3, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_32_5_9_4_7_3_5_2_3_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 32, [5, 3, 4, 7, 2, 5, 2, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_32_5_3_4_7_2_5_2_1_1");

end;

sort_19 := function()
	HDLSynthesize_no_brams(sortAlg5(1024, 32, [5, 3, 4, 7, 2, 5, 2, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_32_5_3_4_7_2_5_2_1_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 32, [5, 3, 2, 7, 2, 5, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_32_5_3_2_7_2_5_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 32, [5, 3, 2, 7, 2, 5, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_32_5_3_2_7_2_5_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 32, [2, 3, 2, 7, 2, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_32_2_3_2_7_2_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 32, [2, 3, 2, 7, 2, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_32_2_3_2_7_2_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 32, [2, 3, 2, 7, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_32_2_3_2_7_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 32, [2, 3, 2, 7, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_32_2_3_2_7_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 32, [2, 3, 2, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_32_2_3_2_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 32, [2, 3, 2, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_32_2_3_2_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 32, [2, 3, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_32_2_3_1_1_1_1_1_1_1");

end;

sort_20 := function()
	HDLSynthesize_no_brams(sortAlg5(1024, 32, [2, 3, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_32_2_3_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 32, [2, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_32_2_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 32, [2, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_32_2_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 32, [1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_32_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 32, [1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_32_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 64, [10, 9, 8, 7, 6, 5, 4, 3, 2]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_64_10_9_8_7_6_5_4_3_2");
	HDLSynthesize_no_brams(sortAlg5(1024, 64, [10, 9, 8, 7, 6, 5, 4, 3, 2]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_64_10_9_8_7_6_5_4_3_2");
	HDLSynthesize_no_brams(sortAlg2(1024, 64, [5, 9, 4, 7, 3, 5, 2, 3, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_64_5_9_4_7_3_5_2_3_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 64, [5, 9, 4, 7, 3, 5, 2, 3, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_64_5_9_4_7_3_5_2_3_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 64, [5, 3, 4, 7, 2, 5, 2, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_64_5_3_4_7_2_5_2_1_1");

end;

sort_21 := function()
	HDLSynthesize_no_brams(sortAlg5(1024, 64, [5, 3, 4, 7, 2, 5, 2, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_64_5_3_4_7_2_5_2_1_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 64, [5, 3, 2, 7, 2, 5, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_64_5_3_2_7_2_5_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 64, [5, 3, 2, 7, 2, 5, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_64_5_3_2_7_2_5_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 64, [2, 3, 2, 7, 2, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_64_2_3_2_7_2_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 64, [2, 3, 2, 7, 2, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_64_2_3_2_7_2_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 64, [2, 3, 2, 7, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_64_2_3_2_7_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 64, [2, 3, 2, 7, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_64_2_3_2_7_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 64, [2, 3, 2, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_64_2_3_2_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 64, [2, 3, 2, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_64_2_3_2_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 64, [2, 3, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_64_2_3_1_1_1_1_1_1_1");

end;

sort_22 := function()
	HDLSynthesize_no_brams(sortAlg5(1024, 64, [2, 3, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_64_2_3_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 64, [2, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_64_2_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 64, [2, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_64_2_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 64, [1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_64_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 64, [1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_64_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 128, [10, 9, 8, 7, 6, 5, 4, 3, 2]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_128_10_9_8_7_6_5_4_3_2");
	HDLSynthesize_no_brams(sortAlg5(1024, 128, [10, 9, 8, 7, 6, 5, 4, 3, 2]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_128_10_9_8_7_6_5_4_3_2");
	HDLSynthesize_no_brams(sortAlg2(1024, 128, [5, 9, 4, 7, 3, 5, 2, 3, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_128_5_9_4_7_3_5_2_3_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 128, [5, 9, 4, 7, 3, 5, 2, 3, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_128_5_9_4_7_3_5_2_3_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 128, [5, 3, 4, 7, 2, 5, 2, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_128_5_3_4_7_2_5_2_1_1");

end;

sort_23 := function()
	HDLSynthesize_no_brams(sortAlg5(1024, 128, [5, 3, 4, 7, 2, 5, 2, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_128_5_3_4_7_2_5_2_1_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 128, [5, 3, 2, 7, 2, 5, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_128_5_3_2_7_2_5_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 128, [5, 3, 2, 7, 2, 5, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_128_5_3_2_7_2_5_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 128, [2, 3, 2, 7, 2, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_128_2_3_2_7_2_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 128, [2, 3, 2, 7, 2, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_128_2_3_2_7_2_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 128, [2, 3, 2, 7, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_128_2_3_2_7_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 128, [2, 3, 2, 7, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_128_2_3_2_7_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 128, [2, 3, 2, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_128_2_3_2_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 128, [2, 3, 2, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_128_2_3_2_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 128, [2, 3, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_128_2_3_1_1_1_1_1_1_1");

end;

sort_24 := function()
	HDLSynthesize_no_brams(sortAlg5(1024, 128, [2, 3, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_128_2_3_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 128, [2, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_128_2_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 128, [2, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_128_2_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(1024, 128, [1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_1024_128_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(1024, 128, [1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_1024_128_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg4(1024, 16, 1), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_1024_16_1");
	HDLSynthesize_no_brams(sortAlg4(1024, 16, 2), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_1024_16_2");
	HDLSynthesize_no_brams(sortAlg4(1024, 16, 5), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_1024_16_5");
	HDLSynthesize_no_brams(sortAlg4(1024, 16, 10), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_1024_16_10");
	HDLSynthesize_no_brams(sortAlg4(1024, 16, 20), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_1024_16_20");

end;

sort_25 := function()
	HDLSynthesize_no_brams(sortAlg4(1024, 16, 50), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_1024_16_50");
	HDLSynthesize_no_brams(sortAlg4(1024, 16, 100), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_1024_16_100");
	HDLSynthesize_no_brams(sortAlg4(1024, 32, 1), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_1024_32_1");
	HDLSynthesize_no_brams(sortAlg4(1024, 32, 2), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_1024_32_2");
	HDLSynthesize_no_brams(sortAlg4(1024, 32, 5), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_1024_32_5");
	HDLSynthesize_no_brams(sortAlg4(1024, 32, 10), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_1024_32_10");
	HDLSynthesize_no_brams(sortAlg4(1024, 32, 20), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_1024_32_20");
	HDLSynthesize_no_brams(sortAlg4(1024, 32, 50), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_1024_32_50");
	HDLSynthesize_no_brams(sortAlg4(1024, 32, 100), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_1024_32_100");
	HDLSynthesize_no_brams(sortAlg4(1024, 64, 1), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_1024_64_1");

end;

sort_26 := function()
	HDLSynthesize_no_brams(sortAlg4(1024, 64, 2), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_1024_64_2");
	HDLSynthesize_no_brams(sortAlg4(1024, 64, 5), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_1024_64_5");
	HDLSynthesize_no_brams(sortAlg4(1024, 64, 10), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_1024_64_10");
	HDLSynthesize_no_brams(sortAlg4(1024, 64, 20), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_1024_64_20");
	HDLSynthesize_no_brams(sortAlg4(1024, 64, 50), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_1024_64_50");
	HDLSynthesize_no_brams(sortAlg4(1024, 64, 100), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_1024_64_100");
	HDLSynthesize_no_brams(sortAlg4(1024, 128, 1), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_1024_128_1");
	HDLSynthesize_no_brams(sortAlg4(1024, 128, 2), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_1024_128_2");
	HDLSynthesize_no_brams(sortAlg4(1024, 128, 5), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_1024_128_5");
	HDLSynthesize_no_brams(sortAlg4(1024, 128, 10), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_1024_128_10");

end;

sort_27 := function()
	HDLSynthesize_no_brams(sortAlg4(1024, 128, 20), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_1024_128_20");
	HDLSynthesize_no_brams(sortAlg4(1024, 128, 50), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_1024_128_50");
	HDLSynthesize_no_brams(sortAlg4(1024, 128, 100), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_1024_128_100");
	HDLSynthesize_no_brams(sortAlg5(2048, 16, [11, 2, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_2048_16_11_2_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(2048, 16, [11, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_2048_16_11_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(2048, 16, [11, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_2048_16_11_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(2048, 16, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_2048_16_1_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(2048, 16, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_2048_16_1_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(2048, 32, [11, 10, 9, 8, 7, 6, 5, 4, 3, 2]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_2048_32_11_10_9_8_7_6_5_4_3_2");
	HDLSynthesize_no_brams(sortAlg5(2048, 32, [11, 10, 9, 8, 7, 6, 5, 4, 3, 2]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_2048_32_11_10_9_8_7_6_5_4_3_2");

end;

sort_28 := function()
	HDLSynthesize_no_brams(sortAlg2(2048, 32, [11, 5, 9, 4, 7, 3, 5, 2, 3, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_2048_32_11_5_9_4_7_3_5_2_3_1");
	HDLSynthesize_no_brams(sortAlg5(2048, 32, [11, 5, 9, 4, 7, 3, 5, 2, 3, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_2048_32_11_5_9_4_7_3_5_2_3_1");
	HDLSynthesize_no_brams(sortAlg2(2048, 32, [11, 5, 3, 4, 7, 2, 5, 2, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_2048_32_11_5_3_4_7_2_5_2_1_1");
	HDLSynthesize_no_brams(sortAlg5(2048, 32, [11, 5, 3, 4, 7, 2, 5, 2, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_2048_32_11_5_3_4_7_2_5_2_1_1");
	HDLSynthesize_no_brams(sortAlg2(2048, 32, [11, 5, 3, 2, 7, 2, 5, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_2048_32_11_5_3_2_7_2_5_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(2048, 32, [11, 5, 3, 2, 7, 2, 5, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_2048_32_11_5_3_2_7_2_5_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(2048, 32, [11, 2, 3, 2, 7, 2, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_2048_32_11_2_3_2_7_2_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(2048, 32, [11, 2, 3, 2, 7, 2, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_2048_32_11_2_3_2_7_2_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(2048, 32, [11, 2, 3, 2, 7, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_2048_32_11_2_3_2_7_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(2048, 32, [11, 2, 3, 2, 7, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_2048_32_11_2_3_2_7_1_1_1_1_1");

end;

sort_29 := function()
	HDLSynthesize_no_brams(sortAlg2(2048, 32, [11, 2, 3, 2, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_2048_32_11_2_3_2_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(2048, 32, [11, 2, 3, 2, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_2048_32_11_2_3_2_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(2048, 32, [11, 2, 3, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_2048_32_11_2_3_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(2048, 128, [11, 5, 9, 4, 7, 3, 5, 2, 3, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_2048_128_11_5_9_4_7_3_5_2_3_1");
	HDLSynthesize_no_brams(sortAlg5(2048, 128, [11, 5, 9, 4, 7, 3, 5, 2, 3, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_2048_128_11_5_9_4_7_3_5_2_3_1");
	HDLSynthesize_no_brams(sortAlg2(2048, 128, [11, 5, 3, 4, 7, 2, 5, 2, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_2048_128_11_5_3_4_7_2_5_2_1_1");
	HDLSynthesize_no_brams(sortAlg5(2048, 128, [11, 5, 3, 4, 7, 2, 5, 2, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_2048_128_11_5_3_4_7_2_5_2_1_1");
	HDLSynthesize_no_brams(sortAlg2(2048, 128, [11, 5, 3, 2, 7, 2, 5, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_2048_128_11_5_3_2_7_2_5_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(2048, 128, [11, 5, 3, 2, 7, 2, 5, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_2048_128_11_5_3_2_7_2_5_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(2048, 128, [11, 2, 3, 2, 7, 2, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_2048_128_11_2_3_2_7_2_1_1_1_1");

end;

sort_30 := function()
	HDLSynthesize_no_brams(sortAlg5(2048, 128, [11, 2, 3, 2, 7, 2, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_2048_128_11_2_3_2_7_2_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(2048, 128, [11, 2, 3, 2, 7, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_2048_128_11_2_3_2_7_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(2048, 128, [11, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_2048_128_11_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(2048, 128, [11, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_2048_128_11_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(2048, 128, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_2048_128_1_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(2048, 128, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_2048_128_1_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg4(2048, 1, 1), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_2048_1_1");
	HDLSynthesize_no_brams(sortAlg4(2048, 1, 11), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_2048_1_11");
	HDLSynthesize_no_brams(sortAlg4(2048, 1, 121), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_2048_1_121");
	HDLSynthesize_no_brams(sortAlg4(2048, 2, 1), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_2048_2_1");

end;

sort_31 := function()
	HDLSynthesize_no_brams(sortAlg4(2048, 2, 11), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_2048_2_11");
	HDLSynthesize_no_brams(sortAlg4(2048, 2, 121), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_2048_2_121");
	HDLSynthesize_no_brams(sortAlg4(2048, 4, 1), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_2048_4_1");
	HDLSynthesize_no_brams(sortAlg6(4096, 8), 1, 0, 16, 350, 1,"sortAlg6_noBRAMs_4096_8");
	HDLSynthesize_no_brams(sortAlg1(4096, 16), 1, 0, 16, 350, 1,"sortAlg1_noBRAMs_4096_16");
	HDLSynthesize_no_brams(sortAlg6(4096, 16), 1, 0, 16, 350, 1,"sortAlg6_noBRAMs_4096_16");
	HDLSynthesize_no_brams(sortAlg1(4096, 32), 1, 0, 16, 350, 1,"sortAlg1_noBRAMs_4096_32");
	HDLSynthesize_no_brams(sortAlg6(4096, 32), 1, 0, 16, 350, 1,"sortAlg6_noBRAMs_4096_32");
	HDLSynthesize_no_brams(sortAlg1(4096, 64), 1, 0, 16, 350, 1,"sortAlg1_noBRAMs_4096_64");
	HDLSynthesize_no_brams(sortAlg6(4096, 64), 1, 0, 16, 350, 1,"sortAlg6_noBRAMs_4096_64");

end;

sort_32 := function()
	HDLSynthesize_no_brams(sortAlg1(4096, 128), 1, 0, 16, 350, 1,"sortAlg1_noBRAMs_4096_128");
	HDLSynthesize_no_brams(sortAlg6(4096, 128), 1, 0, 16, 350, 1,"sortAlg6_noBRAMs_4096_128");
	HDLSynthesize_no_brams(sortAlg2(4096, 1, [12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_1_12_11_10_9_8_7_6_5_4_3_2");
	HDLSynthesize_no_brams(sortAlg5(4096, 1, [12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_1_12_11_10_9_8_7_6_5_4_3_2");
	HDLSynthesize_no_brams(sortAlg2(4096, 1, [6, 11, 5, 9, 4, 7, 3, 5, 2, 3, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_1_6_11_5_9_4_7_3_5_2_3_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 1, [6, 11, 5, 9, 4, 7, 3, 5, 2, 3, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_1_6_11_5_9_4_7_3_5_2_3_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 1, [4, 11, 5, 3, 4, 7, 2, 5, 2, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_1_4_11_5_3_4_7_2_5_2_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 1, [4, 11, 5, 3, 4, 7, 2, 5, 2, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_1_4_11_5_3_4_7_2_5_2_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 1, [3, 11, 5, 3, 2, 7, 2, 5, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_1_3_11_5_3_2_7_2_5_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 1, [3, 11, 5, 3, 2, 7, 2, 5, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_1_3_11_5_3_2_7_2_5_1_1_1");

end;

sort_33 := function()
	HDLSynthesize_no_brams(sortAlg2(4096, 1, [3, 11, 2, 3, 2, 7, 2, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_1_3_11_2_3_2_7_2_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 1, [3, 11, 2, 3, 2, 7, 2, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_1_3_11_2_3_2_7_2_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 1, [2, 11, 2, 3, 2, 7, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_1_2_11_2_3_2_7_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 1, [2, 11, 2, 3, 2, 7, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_1_2_11_2_3_2_7_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 1, [2, 11, 2, 3, 2, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_1_2_11_2_3_2_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 1, [2, 11, 2, 3, 2, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_1_2_11_2_3_2_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 1, [2, 11, 2, 3, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_1_2_11_2_3_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 1, [2, 11, 2, 3, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_1_2_11_2_3_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 1, [2, 11, 2, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_1_2_11_2_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 1, [2, 11, 2, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_1_2_11_2_1_1_1_1_1_1_1_1");

end;

sort_34 := function()
	HDLSynthesize_no_brams(sortAlg2(4096, 1, [2, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_1_2_11_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 1, [2, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_1_2_11_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 1, [2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_1_2_1_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 1, [2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_1_2_1_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 1, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_1_1_1_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 1, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_1_1_1_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 2, [12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_2_12_11_10_9_8_7_6_5_4_3_2");
	HDLSynthesize_no_brams(sortAlg5(4096, 2, [12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_2_12_11_10_9_8_7_6_5_4_3_2");
	HDLSynthesize_no_brams(sortAlg2(4096, 2, [6, 11, 5, 9, 4, 7, 3, 5, 2, 3, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_2_6_11_5_9_4_7_3_5_2_3_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 2, [6, 11, 5, 9, 4, 7, 3, 5, 2, 3, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_2_6_11_5_9_4_7_3_5_2_3_1");

end;

sort_35 := function()
	HDLSynthesize_no_brams(sortAlg2(4096, 2, [4, 11, 5, 3, 4, 7, 2, 5, 2, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_2_4_11_5_3_4_7_2_5_2_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 2, [4, 11, 5, 3, 4, 7, 2, 5, 2, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_2_4_11_5_3_4_7_2_5_2_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 2, [3, 11, 5, 3, 2, 7, 2, 5, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_2_3_11_5_3_2_7_2_5_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 2, [3, 11, 5, 3, 2, 7, 2, 5, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_2_3_11_5_3_2_7_2_5_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 2, [3, 11, 2, 3, 2, 7, 2, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_2_3_11_2_3_2_7_2_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 2, [3, 11, 2, 3, 2, 7, 2, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_2_3_11_2_3_2_7_2_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 2, [2, 11, 2, 3, 2, 7, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_2_2_11_2_3_2_7_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 2, [2, 11, 2, 3, 2, 7, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_2_2_11_2_3_2_7_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 2, [2, 11, 2, 3, 2, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_2_2_11_2_3_2_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 2, [2, 11, 2, 3, 2, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_2_2_11_2_3_2_1_1_1_1_1_1");

end;

sort_36 := function()
	HDLSynthesize_no_brams(sortAlg2(4096, 2, [2, 11, 2, 3, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_2_2_11_2_3_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 2, [2, 11, 2, 3, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_2_2_11_2_3_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 2, [2, 11, 2, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_2_2_11_2_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 2, [2, 11, 2, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_2_2_11_2_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 2, [2, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_2_2_11_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 2, [2, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_2_2_11_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 2, [2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_2_2_1_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 2, [2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_2_2_1_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 2, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_2_1_1_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 2, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_2_1_1_1_1_1_1_1_1_1_1_1");

end;

sort_37 := function()
	HDLSynthesize_no_brams(sortAlg2(4096, 4, [12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_4_12_11_10_9_8_7_6_5_4_3_2");
	HDLSynthesize_no_brams(sortAlg5(4096, 4, [12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_4_12_11_10_9_8_7_6_5_4_3_2");
	HDLSynthesize_no_brams(sortAlg2(4096, 4, [6, 11, 5, 9, 4, 7, 3, 5, 2, 3, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_4_6_11_5_9_4_7_3_5_2_3_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 4, [6, 11, 5, 9, 4, 7, 3, 5, 2, 3, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_4_6_11_5_9_4_7_3_5_2_3_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 4, [4, 11, 5, 3, 4, 7, 2, 5, 2, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_4_4_11_5_3_4_7_2_5_2_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 4, [4, 11, 5, 3, 4, 7, 2, 5, 2, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_4_4_11_5_3_4_7_2_5_2_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 4, [3, 11, 5, 3, 2, 7, 2, 5, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_4_3_11_5_3_2_7_2_5_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 4, [3, 11, 5, 3, 2, 7, 2, 5, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_4_3_11_5_3_2_7_2_5_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 4, [3, 11, 2, 3, 2, 7, 2, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_4_3_11_2_3_2_7_2_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 4, [3, 11, 2, 3, 2, 7, 2, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_4_3_11_2_3_2_7_2_1_1_1_1");

end;

sort_38 := function()
	HDLSynthesize_no_brams(sortAlg2(4096, 4, [2, 11, 2, 3, 2, 7, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_4_2_11_2_3_2_7_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 4, [2, 11, 2, 3, 2, 7, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_4_2_11_2_3_2_7_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 4, [2, 11, 2, 3, 2, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_4_2_11_2_3_2_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 4, [2, 11, 2, 3, 2, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_4_2_11_2_3_2_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 4, [2, 11, 2, 3, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_4_2_11_2_3_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 4, [2, 11, 2, 3, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_4_2_11_2_3_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 4, [2, 11, 2, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_4_2_11_2_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 4, [2, 11, 2, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_4_2_11_2_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 4, [2, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_4_2_11_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 4, [2, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_4_2_11_1_1_1_1_1_1_1_1_1");

end;

sort_39 := function()
	HDLSynthesize_no_brams(sortAlg2(4096, 4, [2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_4_2_1_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 4, [2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_4_2_1_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 4, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_4_1_1_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 4, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_4_1_1_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 8, [12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_8_12_11_10_9_8_7_6_5_4_3_2");
	HDLSynthesize_no_brams(sortAlg5(4096, 8, [12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_8_12_11_10_9_8_7_6_5_4_3_2");
	HDLSynthesize_no_brams(sortAlg2(4096, 8, [6, 11, 5, 9, 4, 7, 3, 5, 2, 3, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_8_6_11_5_9_4_7_3_5_2_3_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 8, [6, 11, 5, 9, 4, 7, 3, 5, 2, 3, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_8_6_11_5_9_4_7_3_5_2_3_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 8, [4, 11, 5, 3, 4, 7, 2, 5, 2, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_8_4_11_5_3_4_7_2_5_2_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 8, [4, 11, 5, 3, 4, 7, 2, 5, 2, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_8_4_11_5_3_4_7_2_5_2_1_1");

end;

sort_40 := function()
	HDLSynthesize_no_brams(sortAlg2(4096, 8, [3, 11, 5, 3, 2, 7, 2, 5, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_8_3_11_5_3_2_7_2_5_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 8, [3, 11, 5, 3, 2, 7, 2, 5, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_8_3_11_5_3_2_7_2_5_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 8, [3, 11, 2, 3, 2, 7, 2, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_8_3_11_2_3_2_7_2_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 8, [3, 11, 2, 3, 2, 7, 2, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_8_3_11_2_3_2_7_2_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 8, [2, 11, 2, 3, 2, 7, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_8_2_11_2_3_2_7_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 8, [2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_8_2_1_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 8, [2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_8_2_1_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 8, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_8_1_1_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 8, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_8_1_1_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 16, [12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_16_12_11_10_9_8_7_6_5_4_3_2");

end;

sort_41 := function()
	HDLSynthesize_no_brams(sortAlg5(4096, 16, [12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_16_12_11_10_9_8_7_6_5_4_3_2");
	HDLSynthesize_no_brams(sortAlg2(4096, 16, [6, 11, 5, 9, 4, 7, 3, 5, 2, 3, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_16_6_11_5_9_4_7_3_5_2_3_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 16, [6, 11, 5, 9, 4, 7, 3, 5, 2, 3, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_16_6_11_5_9_4_7_3_5_2_3_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 16, [4, 11, 5, 3, 4, 7, 2, 5, 2, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_16_4_11_5_3_4_7_2_5_2_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 16, [4, 11, 5, 3, 4, 7, 2, 5, 2, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_16_4_11_5_3_4_7_2_5_2_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 16, [3, 11, 5, 3, 2, 7, 2, 5, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_16_3_11_5_3_2_7_2_5_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 16, [3, 11, 5, 3, 2, 7, 2, 5, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_16_3_11_5_3_2_7_2_5_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 16, [3, 11, 2, 3, 2, 7, 2, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_16_3_11_2_3_2_7_2_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 16, [3, 11, 2, 3, 2, 7, 2, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_16_3_11_2_3_2_7_2_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 16, [2, 11, 2, 3, 2, 7, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_16_2_11_2_3_2_7_1_1_1_1_1");

end;

sort_42 := function()
	HDLSynthesize_no_brams(sortAlg5(4096, 16, [2, 11, 2, 3, 2, 7, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_16_2_11_2_3_2_7_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 16, [2, 11, 2, 3, 2, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_16_2_11_2_3_2_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 16, [2, 11, 2, 3, 2, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_16_2_11_2_3_2_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 16, [2, 11, 2, 3, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_16_2_11_2_3_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 16, [2, 11, 2, 3, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_16_2_11_2_3_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 16, [2, 11, 2, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_16_2_11_2_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 16, [2, 11, 2, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_16_2_11_2_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 16, [2, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_16_2_11_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 16, [2, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_16_2_11_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 16, [2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_16_2_1_1_1_1_1_1_1_1_1_1");

end;

sort_43 := function()
	HDLSynthesize_no_brams(sortAlg5(4096, 16, [2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_16_2_1_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 16, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_16_1_1_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 16, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_16_1_1_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 32, [12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_32_12_11_10_9_8_7_6_5_4_3_2");
	HDLSynthesize_no_brams(sortAlg5(4096, 32, [12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_32_12_11_10_9_8_7_6_5_4_3_2");
	HDLSynthesize_no_brams(sortAlg2(4096, 32, [6, 11, 5, 9, 4, 7, 3, 5, 2, 3, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_32_6_11_5_9_4_7_3_5_2_3_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 32, [6, 11, 5, 9, 4, 7, 3, 5, 2, 3, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_32_6_11_5_9_4_7_3_5_2_3_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 32, [4, 11, 5, 3, 4, 7, 2, 5, 2, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_32_4_11_5_3_4_7_2_5_2_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 32, [4, 11, 5, 3, 4, 7, 2, 5, 2, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_32_4_11_5_3_4_7_2_5_2_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 32, [3, 11, 5, 3, 2, 7, 2, 5, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_32_3_11_5_3_2_7_2_5_1_1_1");

end;

sort_44 := function()
	HDLSynthesize_no_brams(sortAlg5(4096, 32, [3, 11, 5, 3, 2, 7, 2, 5, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_32_3_11_5_3_2_7_2_5_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 32, [3, 11, 2, 3, 2, 7, 2, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_32_3_11_2_3_2_7_2_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 32, [3, 11, 2, 3, 2, 7, 2, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_32_3_11_2_3_2_7_2_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 32, [2, 11, 2, 3, 2, 7, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_32_2_11_2_3_2_7_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 32, [2, 11, 2, 3, 2, 7, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_32_2_11_2_3_2_7_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 32, [2, 11, 2, 3, 2, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_32_2_11_2_3_2_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 32, [2, 11, 2, 3, 2, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_32_2_11_2_3_2_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 32, [2, 11, 2, 3, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_32_2_11_2_3_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 32, [2, 11, 2, 3, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_32_2_11_2_3_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 32, [2, 11, 2, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_32_2_11_2_1_1_1_1_1_1_1_1");

end;

sort_45 := function()
	HDLSynthesize_no_brams(sortAlg5(4096, 32, [2, 11, 2, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_32_2_11_2_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 32, [2, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_32_2_11_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 32, [2, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_32_2_11_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 32, [2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_32_2_1_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 32, [2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_32_2_1_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 32, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_32_1_1_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 32, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_32_1_1_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 64, [12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_64_12_11_10_9_8_7_6_5_4_3_2");
	HDLSynthesize_no_brams(sortAlg5(4096, 64, [12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_64_12_11_10_9_8_7_6_5_4_3_2");
	HDLSynthesize_no_brams(sortAlg2(4096, 64, [6, 11, 5, 9, 4, 7, 3, 5, 2, 3, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_64_6_11_5_9_4_7_3_5_2_3_1");

end;

sort_46 := function()
	HDLSynthesize_no_brams(sortAlg5(4096, 64, [6, 11, 5, 9, 4, 7, 3, 5, 2, 3, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_64_6_11_5_9_4_7_3_5_2_3_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 64, [4, 11, 5, 3, 4, 7, 2, 5, 2, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_64_4_11_5_3_4_7_2_5_2_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 64, [4, 11, 5, 3, 4, 7, 2, 5, 2, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_64_4_11_5_3_4_7_2_5_2_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 64, [3, 11, 5, 3, 2, 7, 2, 5, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_64_3_11_5_3_2_7_2_5_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 64, [3, 11, 5, 3, 2, 7, 2, 5, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_64_3_11_5_3_2_7_2_5_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 64, [3, 11, 2, 3, 2, 7, 2, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_64_3_11_2_3_2_7_2_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 64, [3, 11, 2, 3, 2, 7, 2, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_64_3_11_2_3_2_7_2_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 64, [2, 11, 2, 3, 2, 7, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_64_2_11_2_3_2_7_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 64, [2, 11, 2, 3, 2, 7, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_64_2_11_2_3_2_7_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 64, [2, 11, 2, 3, 2, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_64_2_11_2_3_2_1_1_1_1_1_1");

end;

sort_47 := function()
	HDLSynthesize_no_brams(sortAlg5(4096, 64, [2, 11, 2, 3, 2, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_64_2_11_2_3_2_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 64, [2, 11, 2, 3, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_64_2_11_2_3_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 64, [2, 11, 2, 3, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_64_2_11_2_3_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 64, [2, 11, 2, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_64_2_11_2_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 64, [2, 11, 2, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_64_2_11_2_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 64, [2, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_64_2_11_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 64, [2, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_64_2_11_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 64, [2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_64_2_1_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 64, [2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_64_2_1_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 64, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_64_1_1_1_1_1_1_1_1_1_1_1");

end;

sort_48 := function()
	HDLSynthesize_no_brams(sortAlg5(4096, 64, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_64_1_1_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 128, [12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_128_12_11_10_9_8_7_6_5_4_3_2");
	HDLSynthesize_no_brams(sortAlg5(4096, 128, [12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_128_12_11_10_9_8_7_6_5_4_3_2");
	HDLSynthesize_no_brams(sortAlg2(4096, 128, [6, 11, 5, 9, 4, 7, 3, 5, 2, 3, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_128_6_11_5_9_4_7_3_5_2_3_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 128, [6, 11, 5, 9, 4, 7, 3, 5, 2, 3, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_128_6_11_5_9_4_7_3_5_2_3_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 128, [4, 11, 5, 3, 4, 7, 2, 5, 2, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_128_4_11_5_3_4_7_2_5_2_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 128, [4, 11, 5, 3, 4, 7, 2, 5, 2, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_128_4_11_5_3_4_7_2_5_2_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 128, [3, 11, 5, 3, 2, 7, 2, 5, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_128_3_11_5_3_2_7_2_5_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 128, [3, 11, 5, 3, 2, 7, 2, 5, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_128_3_11_5_3_2_7_2_5_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 128, [3, 11, 2, 3, 2, 7, 2, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_128_3_11_2_3_2_7_2_1_1_1_1");

end;

sort_49 := function()
	HDLSynthesize_no_brams(sortAlg5(4096, 128, [3, 11, 2, 3, 2, 7, 2, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_128_3_11_2_3_2_7_2_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 128, [2, 11, 2, 3, 2, 7, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_128_2_11_2_3_2_7_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 128, [2, 11, 2, 3, 2, 7, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_128_2_11_2_3_2_7_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 128, [2, 11, 2, 3, 2, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_128_2_11_2_3_2_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 128, [2, 11, 2, 3, 2, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_128_2_11_2_3_2_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 128, [2, 11, 2, 3, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_128_2_11_2_3_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 128, [2, 11, 2, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_128_2_11_2_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 128, [2, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_128_2_11_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 128, [2, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_128_2_11_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 128, [2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_128_2_1_1_1_1_1_1_1_1_1_1");

end;

sort_50 := function()
	HDLSynthesize_no_brams(sortAlg5(4096, 128, [2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_128_2_1_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg2(4096, 128, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg2_noBRAMs_4096_128_1_1_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg5(4096, 128, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 1, 0, 16, 350, 1,"sortAlg5_noBRAMs_4096_128_1_1_1_1_1_1_1_1_1_1_1");
	HDLSynthesize_no_brams(sortAlg4(4096, 1, 1), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_1_1");
	HDLSynthesize_no_brams(sortAlg4(4096, 1, 2), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_1_2");
	HDLSynthesize_no_brams(sortAlg4(4096, 1, 3), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_1_3");
	HDLSynthesize_no_brams(sortAlg4(4096, 1, 4), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_1_4");
	HDLSynthesize_no_brams(sortAlg4(4096, 1, 6), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_1_6");
	HDLSynthesize_no_brams(sortAlg4(4096, 1, 12), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_1_12");
	HDLSynthesize_no_brams(sortAlg4(4096, 1, 24), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_1_24");

end;

sort_51 := function()
	HDLSynthesize_no_brams(sortAlg4(4096, 1, 36), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_1_36");
	HDLSynthesize_no_brams(sortAlg4(4096, 1, 48), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_1_48");
	HDLSynthesize_no_brams(sortAlg4(4096, 1, 72), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_1_72");
	HDLSynthesize_no_brams(sortAlg4(4096, 1, 144), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_1_144");
	HDLSynthesize_no_brams(sortAlg4(4096, 2, 1), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_2_1");
	HDLSynthesize_no_brams(sortAlg4(4096, 2, 2), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_2_2");
	HDLSynthesize_no_brams(sortAlg4(4096, 2, 3), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_2_3");
	HDLSynthesize_no_brams(sortAlg4(4096, 2, 4), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_2_4");
	HDLSynthesize_no_brams(sortAlg4(4096, 2, 6), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_2_6");
	HDLSynthesize_no_brams(sortAlg4(4096, 2, 12), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_2_12");

end;

sort_52 := function()
	HDLSynthesize_no_brams(sortAlg4(4096, 2, 24), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_2_24");
	HDLSynthesize_no_brams(sortAlg4(4096, 2, 36), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_2_36");
	HDLSynthesize_no_brams(sortAlg4(4096, 2, 48), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_2_48");
	HDLSynthesize_no_brams(sortAlg4(4096, 2, 72), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_2_72");
	HDLSynthesize_no_brams(sortAlg4(4096, 2, 144), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_2_144");
	HDLSynthesize_no_brams(sortAlg4(4096, 4, 1), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_4_1");
	HDLSynthesize_no_brams(sortAlg4(4096, 4, 2), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_4_2");
	HDLSynthesize_no_brams(sortAlg4(4096, 4, 3), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_4_3");
	HDLSynthesize_no_brams(sortAlg4(4096, 4, 4), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_4_4");
	HDLSynthesize_no_brams(sortAlg4(4096, 4, 6), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_4_6");

end;

sort_53 := function()
	HDLSynthesize_no_brams(sortAlg4(4096, 4, 12), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_4_12");
	HDLSynthesize_no_brams(sortAlg4(4096, 4, 24), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_4_24");
	HDLSynthesize_no_brams(sortAlg4(4096, 4, 36), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_4_36");
	HDLSynthesize_no_brams(sortAlg4(4096, 4, 48), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_4_48");
	HDLSynthesize_no_brams(sortAlg4(4096, 4, 72), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_4_72");
	HDLSynthesize_no_brams(sortAlg4(4096, 4, 144), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_4_144");
	HDLSynthesize_no_brams(sortAlg4(4096, 8, 1), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_8_1");
	HDLSynthesize_no_brams(sortAlg4(4096, 8, 2), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_8_2");
	HDLSynthesize_no_brams(sortAlg4(4096, 8, 3), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_8_3");
	HDLSynthesize_no_brams(sortAlg4(4096, 8, 4), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_8_4");

end;

sort_54 := function()
	HDLSynthesize_no_brams(sortAlg4(4096, 8, 6), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_8_6");
	HDLSynthesize_no_brams(sortAlg4(4096, 8, 12), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_8_12");
	HDLSynthesize_no_brams(sortAlg4(4096, 8, 24), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_8_24");
	HDLSynthesize_no_brams(sortAlg4(4096, 8, 36), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_8_36");
	HDLSynthesize_no_brams(sortAlg4(4096, 8, 48), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_8_48");
	HDLSynthesize_no_brams(sortAlg4(4096, 8, 72), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_8_72");
	HDLSynthesize_no_brams(sortAlg4(4096, 8, 144), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_8_144");
	HDLSynthesize_no_brams(sortAlg4(4096, 16, 1), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_16_1");
	HDLSynthesize_no_brams(sortAlg4(4096, 16, 2), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_16_2");
	HDLSynthesize_no_brams(sortAlg4(4096, 16, 3), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_16_3");

end;

sort_55 := function()
	HDLSynthesize_no_brams(sortAlg4(4096, 16, 4), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_16_4");
	HDLSynthesize_no_brams(sortAlg4(4096, 16, 6), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_16_6");
	HDLSynthesize_no_brams(sortAlg4(4096, 16, 12), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_16_12");
	HDLSynthesize_no_brams(sortAlg4(4096, 16, 24), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_16_24");
	HDLSynthesize_no_brams(sortAlg4(4096, 16, 36), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_16_36");
	HDLSynthesize_no_brams(sortAlg4(4096, 16, 48), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_16_48");
	HDLSynthesize_no_brams(sortAlg4(4096, 16, 72), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_16_72");
	HDLSynthesize_no_brams(sortAlg4(4096, 16, 144), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_16_144");
	HDLSynthesize_no_brams(sortAlg4(4096, 32, 1), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_32_1");
	HDLSynthesize_no_brams(sortAlg4(4096, 32, 2), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_32_2");

end;

sort_56 := function()
	HDLSynthesize_no_brams(sortAlg4(4096, 32, 3), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_32_3");
	HDLSynthesize_no_brams(sortAlg4(4096, 32, 4), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_32_4");
	HDLSynthesize_no_brams(sortAlg4(4096, 32, 6), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_32_6");
	HDLSynthesize_no_brams(sortAlg4(4096, 32, 12), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_32_12");
	HDLSynthesize_no_brams(sortAlg4(4096, 32, 24), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_32_24");
	HDLSynthesize_no_brams(sortAlg4(4096, 32, 36), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_32_36");
	HDLSynthesize_no_brams(sortAlg4(4096, 32, 48), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_32_48");
	HDLSynthesize_no_brams(sortAlg4(4096, 32, 72), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_32_72");
	HDLSynthesize_no_brams(sortAlg4(4096, 32, 144), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_32_144");
	HDLSynthesize_no_brams(sortAlg4(4096, 64, 1), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_64_1");

end;

sort_57 := function()
	HDLSynthesize_no_brams(sortAlg4(4096, 64, 2), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_64_2");
	HDLSynthesize_no_brams(sortAlg4(4096, 64, 3), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_64_3");
	HDLSynthesize_no_brams(sortAlg4(4096, 64, 4), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_64_4");
	HDLSynthesize_no_brams(sortAlg4(4096, 64, 6), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_64_6");
	HDLSynthesize_no_brams(sortAlg4(4096, 64, 12), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_64_12");
	HDLSynthesize_no_brams(sortAlg4(4096, 64, 24), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_64_24");
	HDLSynthesize_no_brams(sortAlg4(4096, 64, 36), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_64_36");
	HDLSynthesize_no_brams(sortAlg4(4096, 64, 48), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_64_48");
	HDLSynthesize_no_brams(sortAlg4(4096, 64, 72), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_64_72");
	HDLSynthesize_no_brams(sortAlg4(4096, 64, 144), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_64_144");

end;

sort_58 := function()
	HDLSynthesize_no_brams(sortAlg4(4096, 128, 1), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_128_1");
	HDLSynthesize_no_brams(sortAlg4(4096, 128, 2), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_128_2");
	HDLSynthesize_no_brams(sortAlg4(4096, 128, 3), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_128_3");
	HDLSynthesize_no_brams(sortAlg4(4096, 128, 4), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_128_4");
	HDLSynthesize_no_brams(sortAlg4(4096, 128, 6), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_128_6");
	HDLSynthesize_no_brams(sortAlg4(4096, 128, 12), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_128_12");
	HDLSynthesize_no_brams(sortAlg4(4096, 128, 24), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_128_24");
	HDLSynthesize_no_brams(sortAlg4(4096, 128, 36), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_128_36");
	HDLSynthesize_no_brams(sortAlg4(4096, 128, 48), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_128_48");
	HDLSynthesize_no_brams(sortAlg4(4096, 128, 72), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_128_72");
	HDLSynthesize_no_brams(sortAlg4(4096, 128, 144), 1, 0, 16, 350, 1,"sortAlg4_noBRAMs_4096_128_144");
end;


#############################################################################
##
#W  automgroup.gi             automgrp package                 Yevgen Muntyan
#W                                                             Dmytro Savchuk
##
#Y  Copyright (C) 2003 - 2018 Yevgen Muntyan, Dmytro Savchuk
##

###############################################################################
##
#M  AutomatonGroup(<list>)
##
InstallMethod(AutomatonGroup, "for [IsList]", [IsList],
function(list)
  return AutomatonGroup(list, false);
end);

###############################################################################
##
#M  AutomatonGroup(<list>, <bind_vars>)
##
InstallMethod(AutomatonGroup, "for [IsList, IsBool]", [IsList, IsBool],
function(list, bind_vars)
  if not AG_IsCorrectAutomatonList(list, true) then
    Error("in AutomatonGroup(IsList, IsBool):\n",
          "  given list is not a correct list representing automaton\n");
  fi;

  return GroupOfAutomFamily(AutomFamily(list, bind_vars));
end);

###############################################################################
##
#M  AutomatonGroup(<list>, <names>)
##
InstallMethod(AutomatonGroup, "for [IsList, IsList]", [IsList, IsList],
function(list, names)
  return AutomatonGroup(list, names, AG_Globals.bind_vars_autom_family);
end);

###############################################################################
##
#M  AutomatonGroup(<list>, <names>, <bind_vars>)
##
InstallMethod(AutomatonGroup,
              "for [IsList, IsList, IsBool]", [IsList, IsList, IsBool],
function(list, names, bind_vars)
  if not AG_IsCorrectAutomatonList(list, true) then
    Error("error in AutomatonGroup(IsList, IsList, IsBool):\n",
          "  given list is not a correct list representing automaton\n");
  fi;

  return GroupOfAutomFamily(AutomFamily(list, names, bind_vars));
end);

###############################################################################
##
#M  AutomatonGroup(<string>)
#M  AutomatonGroup(<string>, <bind_vars>)
##
InstallMethod(AutomatonGroup, "for [IsString]", [IsString],
function(string)
  return AutomatonGroup(string, AG_Globals.bind_vars_autom_family);
end);

InstallMethod(AutomatonGroup, "for [IsString, IsBool]", [IsString, IsBool],
function(string, bind_vars)
  local s;
  s := AG_ParseAutomatonString(string);
  return AutomatonGroup(s[2], s[1], bind_vars);
end);

InstallMethod(AutomatonGroup, "for [IsMealyAutomaton]", [IsMealyAutomaton],
function(A)
  if not IsInvertible(A) then
    Error("Automaton <A> is not invertible");
  fi;
  return AutomatonGroup(AutomatonList(A), A!.states);
end);

InstallMethod(AutomatonGroup, "for [IsMealyAutomaton, IsBool]", [IsMealyAutomaton, IsBool],
function(A, bind_vars)
  if not IsInvertible(A) then
    Error("Automaton <A> is not invertible");
  fi;
  return AutomatonGroup(AutomatonList(A), A!.states, bind_vars);
end);

###############################################################################
##
#M  GroupOfAutomFamily(<G>)
##
InstallMethod(GroupOfAutomFamily, "for [IsAutomGroup]",
                   [IsAutomGroup],
function(G)
  return GroupOfAutomFamily(UnderlyingAutomFamily(G));
end);

###############################################################################
##
#M  IsGroupOfAutomFamily(<G>)
##
InstallMethod(IsGroupOfAutomFamily, "for [IsAutomGroup]",
              [IsAutomGroup],
function(G)
  return G = GroupOfAutomFamily(G);
end);

###############################################################################
##
#M  UseSubsetRelation(<G>)
##
InstallMethod(UseSubsetRelation,
              "for [IsAutomGroup, IsAutomGroup]",
              [IsAutomGroup, IsAutomGroup],
function(super, sub)
  ## the full group is self similar, so if <super> is smaller than the full
  ##  group then sub is smaller either
  if HasIsGroupOfAutomFamily(super) then
    if not IsGroupOfAutomFamily(super) then
      SetIsGroupOfAutomFamily(sub, false); fi; fi;
  TryNextMethod();
end);

###############################################################################
##
#M  __AG_SubgroupOnLevel(<G>, <gens>, <level>)
##
InstallMethod(__AG_SubgroupOnLevel, [IsAutomGroup,
                                    IsList and IsTreeAutomorphismCollection,
                                    IsPosInt],
function(G, gens, level)
  local overgroup;

  if IsEmpty(gens) or (Length(gens) = 1 and IsOne(gens[1])) then
    return TrivialSubgroup(G);
  fi;

  if HasIsGroupOfAutomFamily(G) and IsGroupOfAutomFamily(G) then
    overgroup := G;
  else
    overgroup := GroupOfAutomFamily(UnderlyingAutomFamily(G));
  fi;

  return SubgroupNC(overgroup, gens);
end);

InstallOtherMethod(__AG_SubgroupOnLevel, [IsAutomGroup, IsList and IsEmpty, IsPosInt],
function(G, gens, level)
  return TrivialSubgroup(G);
end);

InstallMethod(__AG_SubgroupOnLevel, [IsTreeAutomorphismGroup,
                                    IsList and IsInvertibleAutomCollection,
                                    IsPosInt],
function(G, gens, level)
  local overgroup;

  overgroup := GroupOfAutomFamily(FamilyObj(gens[1]));

  if Length(gens) = 1 and IsOne(gens[1]) then
    return TrivialSubgroup(overgroup);
  fi;

  return SubgroupNC(overgroup, gens);
end);

InstallMethod(__AG_SimplifyGroupGenerators, [IsList and IsInvertibleAutomCollection],
function(gens)
  local words, fam;

  if IsEmpty(gens) then
    return [];
  fi;

  fam := FamilyObj(gens[1]);
  words := FreeGeneratorsOfGroup(Group(List(gens, a -> a!.word)));

  if fam!.use_rws and not IsEmpty(words) then
    words := AG_ReducedForm(fam!.rws, words);
    if not IsEmpty(words) then
      words := FreeGeneratorsOfGroup(Group(words));
    fi;
  fi;

  if IsEmpty(words) then
    return [];
  fi;

  return List(words, w -> Autom(w, fam));
end);

###############################################################################
##
#M  PrintObj(<G>)
##
InstallMethod(PrintObj, "for [IsAutomatonGroup]",
              [IsAutomatonGroup],
function(G)
  Print("AutomatonGroup(\"", String(G), "\")");
end);

###############################################################################
##
#M  Display(<G>)
##
InstallMethod(Display, "for [IsAutomGroup]",
              [IsAutomGroup],
function(G)
  local i, gens, printone;

  printone := function(a)
    Print(a, " = ", Decompose(a));
  end;

  gens := GeneratorsOfGroup(G);
  if gens = [] then Print("< >"); fi;
  if Length(gens) = 1 then
    Print("< "); printone(gens[1]); Print(" >");
  else
    Print("< "); printone(gens[1]); Print(", \n");
    for i in [2..Length(gens)-1] do
      Print("  "); printone(gens[i]); Print(", \n");
    od;
    Print("  "); printone(gens[Length(gens)]); Print(" >");
  fi;
end);

#############################################################################
##
#M  String(<G>)
##
InstallMethod(String, "for [IsAutomGroup]", [IsAutomGroup],
function(G)
  local i, gens, formatone, s;

  formatone := function(a)
    return Concatenation(String(a), " = ", String(Decompose(a)));
  end;

  gens := GeneratorsOfGroup(G);

  s := "";
  for i in [1..Length(gens)] do
    Append(s, formatone(gens[i]));
    if i <> Length(gens) then
      Append(s, ", ");
    fi;
  od;

  return s;
end);

###############################################################################
##
#M  ViewObj(<G>)
##
InstallMethod(ViewObj, "for [IsAutomGroup]",
              [IsAutomGroup],
function(G)
  local i, gens;
  gens := List(GeneratorsOfGroup(G), g -> Word(g));
  if gens = [] then Print("< >"); fi;
  Print("< ");
  for i in [1..Length(gens)-1] do
    if IsOne(gens[i]) then
      Print(AG_Globals.identity_symbol, ", ");
    else
      Print(gens[i], ", ");
    fi;
  od;
  if IsOne(gens[Length(gens)]) then
    Print(AG_Globals.identity_symbol, " >");
  else
    Print(gens[Length(gens)], " >");
  fi;
end);

###############################################################################
##
#M  MihailovaSystem(G)
##
##  TODO XXX test it
##
InstallMethod(MihailovaSystem, "for [IsAutomatonGroup]", [IsAutomatonGroup],
function (G)
  local gens, mih, mih_gens, i;

  if not IsActingOnBinaryTree(G) then
    Error("MihailovaSystem(IsAutomGroup):\n  sorry, group is not acting on binary tree\n");
  fi;
  if not IsFractalByWords(G) then
    Info(InfoAutomGrp, 1, "given group is not IsFractalByWords");
    return fail;
  fi;

  gens := GeneratorsOfGroup(StabilizerOfFirstLevel(G));
  mih := AG_ComputeMihailovaSystemPairs(List(gens, a -> StatesWords(a)));

  if mih = fail then
    return fail;
  elif not mih[3] then
    return gens;
  fi;

  mih_gens := [];
  for i in [1..Length(gens)] do
    mih_gens[i] := AG_CalculateWord(mih[2][i], gens);
  od;
  return mih_gens;
end);

###############################################################################
##
#M  IsFractalByWords(G)
##
InstallMethod(IsFractalByWords, "for [IsAutomGroup]",
              [IsAutomGroup],
function (G)
  local freegens, stab, i, sym, f;

  sym := GroupWithGenerators(List(GeneratorsOfGroup(G), g -> Perm(g)));
  if not IsTransitive(sym, [1..DegreeOfTree(G)]) then
    Info(InfoAutomGrp, 1, "group is not transitive on first level");
    return false;
  fi;

  f := GroupWithGenerators(List(GeneratorsOfGroup(G), g -> Word(g)));
  stab := StabilizerOfFirstLevel(G);
  stab := List(GeneratorsOfGroup(stab), a -> StatesWords(a));

  for i in [1..DegreeOfTree(G)] do
    if f <> GroupWithGenerators(List(stab, s -> s[i])) then
      return false;
    fi;
  od;
  return true;
end);

###############################################################################
##
#M  Size(G)
##
InstallMethod(Size, "for [IsAutomGroup]", [IsAutomGroup],
function (G)
  local f, A, lev;
  if IsTrivial(G) then
    Info(InfoAutomGrp, 3, "Size(G): 1, G is trivial");
    return 1;
  fi;

  if CanEasilyTestSphericalTransitivity(G) and IsSphericallyTransitive(G) then
    Info(InfoAutomGrp, 3, "Size(G): infinity, G is spherically transitive");
    return infinity;
  fi;

  if IsFractalByWords(G) then
    Info(InfoAutomGrp, 3, "Size(G): infinity, G is fractal by words");
    return infinity;
  fi;

  if HasIsFractal(G) and IsFractal(G) then
    Info(InfoAutomGrp, 3, "Size(G): infinity, G is fractal");
    return infinity;
  fi;

  if IsAutomatonGroup(G) then
    A:=MealyAutomaton(AutomatonList(G));
    if IsMDTrivial(A) then
      Info(InfoAutomGrp, 3, "Size(G): automaton generating G is MD-trivial");
      lev:=LevelOfFaithfulAction(G,infinity);
      return Size(G);
    elif (DegreeOfTree(G)=2 or NumberOfStates(A)=2) and IsIRAutomaton(A) then
      Info(InfoAutomGrp, 3, "Size(G): infinity, G is generated by 2-letter or 2-state not MD-trivial IR-automaton ");
      return infinity;
    fi;
  fi;

  if IsAutomatonGroup(G) and LevelOfFaithfulAction(G,8)<>fail then
    return Size(G);
  fi;

  f := FindElementOfInfiniteOrder(G,10,10);

  if HasSize(G) or f <> fail then
    return Size(G);
  fi;

  Info(InfoAutomGrp, 1, "You can try to use IsomorphismPermGroup(<G>) or\n",
                        "   FindElementOfInfiniteOrder(<G>,<length>,<depth>) with bigger bounds");
  TryNextMethod();
end);

InstallOtherMethod(LevelOfFaithfulAction, "for [IsAutomGroup and IsSelfSimilar]",
              [IsAutomGroup and IsSelfSimilar,IsCyclotomic],
function(G,max_lev)
  local s,s_next,lev;
  if HasIsFinite(G) and not IsFinite(G) then return fail; fi;
  if HasLevelOfFaithfulAction(G) then return LevelOfFaithfulAction(G); fi;
  lev := 0; s := 1; s_next := Size(PermGroupOnLevel(G,1));
  while s<s_next and lev<max_lev do
    lev := lev+1;
    s := s_next;
    s_next := Size(PermGroupOnLevel(G,lev+1));
  od;
  if s = s_next then
    SetSize(G,s);
    SetLevelOfFaithfulAction(G,lev);
    return lev;
  else
    return fail;
  fi;
end);

InstallMethod(LevelOfFaithfulAction, "for [IsAutomGroup and IsSelfSimilar]",
              [IsAutomGroup and IsSelfSimilar],
function(G)
  return LevelOfFaithfulAction(G,infinity);
end);

InstallOtherMethod(IsomorphismPermGroup, "for [IsAutomGroup and IsSelfSimilar,IsCyclotomic]",
                   [IsAutomGroup and IsSelfSimilar, IsCyclotomic],
function (G, n)
  local H, lev;
  lev := LevelOfFaithfulAction(G, n);
  if lev <> fail then
    H := PermGroupOnLevel(G,LevelOfFaithfulAction(G));
    return AG_GroupHomomorphismByImagesNC(G, H, GeneratorsOfGroup(G), GeneratorsOfGroup(H));
  fi;
  return fail;
end);

InstallMethod(IsomorphismPermGroup, "for [IsAutomGroup]",
              [IsAutomGroup], SUM_FLAGS,
function (G)
  local H;
  H := AG_FiniteGroupId(G);
  return AG_GroupHomomorphismByImagesNC(G, H, GeneratorsOfGroup(G), GeneratorsOfGroup(H));
end);

BindGlobal("TestSelfSimilarity",
function(G)
  if CanEasilyTestSelfSimilarity(G) then
    IsSelfSimilar(G);
    return true;
  fi;

  if IsTrivial(G) then
    SetIsSelfSimilar(G, true);
    return true;
  fi;

  if HasIsGroupOfAutomFamily(G) and IsGroupOfAutomFamily(G) then
    SetIsSelfSimilar(G, true);
    return true;
  fi;

  if Set(GeneratorsOfGroup(G)) = Set(GeneratorsOfGroup(GroupOfAutomFamily(UnderlyingAutomFamily(G)))) then
    SetIsSelfSimilar(G, true);
    return true;
  fi;

  return false;
end);

###############################################################################
##
#M  IsSphericallyTransitive(G)
##
InstallMethod(IsSphericallyTransitive, "for [IsAutomGroup]",
              [IsAutomGroup],
function (G)
  local x, rat_gens, abel_hom, lev;

  if DegreeOfTree(G)=1 then
    Info(InfoAutomGrp, 3, "IsSphericallyTransitive(G): true");
    Info(InfoAutomGrp, 3, "  G acts on 1-ary tree");
    return true;
  fi;

  if IsFractalByWords(G) then
    Info(InfoAutomGrp, 3, "IsSphericallyTransitive(G): true");
    Info(InfoAutomGrp, 3, "  G is fractal");
    return true;
  fi;

  if IsTrivial(G) then
    Info(InfoAutomGrp, 3, "IsSphericallyTransitive(G): false");
    Info(InfoAutomGrp, 3, "  G is trivial: G = ", G);
    return false;
  fi;

  if HasIsFinite(G) and IsFinite(G) then
    Info(InfoAutomGrp, 3, "IsSphericallyTransitive(G): false");
    Info(InfoAutomGrp, 3, "  IsFinite(G): G = ", G);
    return false;
  fi;

  if DegreeOfTree(G) = 2 and TestSelfSimilarity(G) and IsSelfSimilar(G) then
    if HasIsFinite(G) and IsFinite(G) = false then
      Info(InfoAutomGrp, 3, "IsSphericallyTransitive(G): true");
      Info(InfoAutomGrp, 3, "  <G> is infinite self-similar acting on binary tree");
      return true;
    fi;
    if PermGroupOnLevel(G,2) = Group((1,4,2,3)) then
      Info(InfoAutomGrp, 3, "IsSphericallyTransitive(G): true");
      Info(InfoAutomGrp, 3, "  any element which acts transitively on the first level acts spherically transitively");
      return true;
    fi;
  fi;

  for lev in [1..8] do
    if not IsTransitiveOnLevel(G,lev) then
      Info(InfoAutomGrp, 3, "IsSphericallyTransitive(G): false");
      Info(InfoAutomGrp, 3, "  the group does not act transitively on level ", lev);
      return false;
    fi;
  od;

  TryNextMethod();
end);

###############################################################################
##
#M  DiagonalPower(<G>, <n>)
##
InstallOtherMethod( DiagonalPower,
                    "for [IsAutomGroup and IsGroupOfAutomFamily, IsPosInt]",
                    [IsAutomGroup and IsGroupOfAutomFamily, IsPosInt],
function(G, n)
  return DiagonalPower(UnderlyingAutomFamily(G), n);
end);

###############################################################################
##
#M  MultAutomAlphabet(<G>, <n>)
##
InstallOtherMethod( MultAutomAlphabet,
                    "for [IsAutomGroup and IsGroupOfAutomFamily, IsPosInt]",
                    [IsAutomGroup and IsGroupOfAutomFamily, IsPosInt],
function(G, n)
  return MultAutomAlphabet(UnderlyingAutomFamily(G), n);
end);

###############################################################################
##
#M  \= (<G>, <H>)
##
InstallMethod(\=, "for [IsAutomGroup, IsAutomGroup]",
              IsIdenticalObj, [IsAutomGroup, IsAutomGroup],
function(G, H)
  local fgens1, fgens2, fam;

  if HasIsGroupOfAutomFamily(G) and HasIsGroupOfAutomFamily(H) then
    if IsGroupOfAutomFamily(G) <> IsGroupOfAutomFamily(H) then
      Info(InfoAutomGrp, 3, "G = H: false, exactly one is GroupOfAutomFamily");
      return false;
    fi;
    if IsGroupOfAutomFamily(G) then
      Info(InfoAutomGrp, 3, "G = H: true, both are GroupOfAutomFamily");
      return true;
    fi;
  fi;

  fgens1 := List(GeneratorsOfGroup(G), g -> Word(g));
  fgens2 := List(GeneratorsOfGroup(H), g -> Word(g));
  fam := UnderlyingAutomFamily(G);

  if fam!.rws <> fail then
    fgens1 := AG_ReducedForm(fam!.rws, fgens1);
    fgens2 := AG_ReducedForm(fam!.rws, fgens2);
  fi;

  if IsEmpty(fgens1) then
    return ForAll(fgens2, IsOne);
  elif IsEmpty(fgens2) then
    return ForAll(fgens1, IsOne);
  fi;

  if GroupWithGenerators(fgens1) = GroupWithGenerators(fgens2) then
    Info(InfoAutomGrp, 3, "G = H: true, by subgroups of free group");
    return true;
  fi;

  TryNextMethod();
end);

###############################################################################
##
#M  IsSubset (<G>, <H>)
##
InstallMethod(IsSubset, "for [IsAutomGroup, IsAutomGroup]",
              IsIdenticalObj, [IsAutomGroup, IsAutomGroup],
function(G, H)
  local h, fam, fgens1, fgens2;

  if HasIsGroupOfAutomFamily(G) and IsGroupOfAutomFamily(G) then
    Info(InfoAutomGrp, 3, "IsSubgroup(G, H): true");
    Info(InfoAutomGrp, 3, "  G is GroupOfAutomFamily");
    return true;
  fi;

  fgens1 := List(GeneratorsOfGroup(G), g -> Word(g));
  fgens2 := List(GeneratorsOfGroup(H), g -> Word(g));
  fam := UnderlyingAutomFamily(G);

  if fam!.rws <> fail then
    fgens1 := AG_ReducedForm(fam!.rws, fgens1);
    fgens2 := AG_ReducedForm(fam!.rws, fgens2);
  fi;

  if IsSubgroup(GroupWithGenerators(fgens1), GroupWithGenerators(fgens2)) then
    Info(InfoAutomGrp, 3, "IsSubgroup(G, H): true");
    Info(InfoAutomGrp, 3, "  by subgroups of free group");
    return true;
  fi;

  TryNextMethod();
end);

###############################################################################
##
#M  <g> in <G>
##
InstallMethod(\in, "for [IsAutom, IsAutomGroup]",
              [IsAutom, IsAutomGroup],
function(g, G)
  local fam, fgens, w;

  if HasIsGroupOfAutomFamily(G) and IsGroupOfAutomFamily(G) then
    return true;
  fi;

  fgens := List(GeneratorsOfGroup(G), g -> Word(g));
  w := Word(g);

  fam := UnderlyingAutomFamily(G);

  if fam!.rws <> fail then
    fgens := AG_ReducedForm(fam!.rws, fgens);
    if IsEmpty(fgens) then
      return IsOne(g);
    fi;
    w := AG_ReducedForm(fam!.rws, w);
  fi;

  if w in GroupWithGenerators(fgens) then
    Info(InfoAutomGrp, 3, "g in G: true");
    Info(InfoAutomGrp, 3, "  by elements of free group");
    Info(InfoAutomGrp, 3, "  g = ", g, "; G = ", G);
    return true;
  fi;

  TryNextMethod();
end);

###############################################################################
##
#M  Random(<G>)
##
InstallMethodWithRandomSource(Random, "for a random source and [IsAutomGroup]",
              [IsRandomSource, IsAutomGroup],
function(rs, G)
  local F, gens, pi;

  if IsTrivial(G) then
    return One(G);
  elif IsAutomatonGroup(G) then
    return Autom(Random(rs, UnderlyingFreeGroup(G)), UnderlyingAutomFamily(G));
  else
    gens := GeneratorsOfGroup(G);
    F := FreeGroup(Length(gens));
    pi := GroupHomomorphismByImagesNC(F, G,  GeneratorsOfGroup(F), gens);
    return Random(rs, F)^pi;
  fi;
end);

###############################################################################
##
#M  UnderlyingFreeSubgroup(<G>)
##
InstallMethod(UnderlyingFreeSubgroup, "for [IsAutomGroup]",
              [IsAutomGroup],
function(G)
  local f;
  if HasIsGroupOfAutomFamily(G) and IsGroupOfAutomFamily(G) then
    return UnderlyingFreeGroup(G);
  fi;
  f := Subgroup(UnderlyingFreeGroup(G), UnderlyingFreeGenerators(G));
  if f = UnderlyingFreeGroup(G) then
    SetIsGroupOfAutomFamily(G, true);
  fi;
  return f;
end);

###############################################################################
##
#M  UnderlyingFreeGenerators(<G>)
##
InstallMethod(UnderlyingFreeGenerators, "for [IsAutomGroup]",
              [IsAutomGroup],
function(G)
  return List(GeneratorsOfGroup(G), g -> Word(g));
end);

###############################################################################
##
#M  TrivialSubmagmaWithOne(<G>)
##
InstallMethod(TrivialSubmagmaWithOne, "for [IsAutomGroup]",
              [IsAutomGroup],
function(G)
  return Subgroup(G, [One(G)]);
end);

###############################################################################
##
#M  IsAutomatonGroup(<G>)
##
InstallImmediateMethod(IsAutomatonGroup, IsAutomGroup, 0,
function(G)
  local fam;
  fam := UnderlyingAutomFamily(G);
  return fam!.numstates = 0 or
         GeneratorsOfGroup(G) = fam!.automgens{[1..fam!.numstates]};
end);

###############################################################################
##
#M  AutomatonList(<G>)
##
InstallMethod(AutomatonList, "for [IsAutomGroup]",
              [IsAutomGroup],
function(G)
  if IsAutomatonGroup(G) then
    return AutomatonList(GroupOfAutomFamily(UnderlyingAutomFamily(G)));
  else
    Error("Group <G> is not necessarily generated by automaton,");
  fi;
end);

###############################################################################
##
#M  IsSelfSimilar(<G>)
##
InstallMethod(IsSelfSimilar, "for [IsAutomGroup]",
              [IsAutomGroup],
function(G)
  local g, i, res;
  res := true;
  for g in GeneratorsOfGroup(G) do
    for i in [1..UnderlyingAutomFamily(G)!.deg] do
      res := Section(g, i) in G;
      if res = fail then
        TryNextMethod();
      elif not res then
        return false;
      fi;
    od;
  od;
  return true;
end);

###############################################################################
##
#M  UnderlyingAutomFamily(<G>)
##
InstallMethod(UnderlyingAutomFamily, "for [IsAutomGroup]",
              [IsAutomGroup],
function(G)
  return FamilyObj(GeneratorsOfGroup(G)[1]);
end);

###############################################################################
##
#M  UnderlyingAutomaton(<G>)
##
InstallMethod(UnderlyingAutomaton, "for [IsAutomGroup]",
              [IsAutomGroup],
function(G)
  local fam;
  fam := UnderlyingAutomFamily(G);
  return MealyAutomaton(AG_AddInversesList(fam!.automatonlist){[1..fam!.numstates+1]});
end);

#E